Golang基础1

基本类型

bool

整数:byte(相当于uint8), rune(相当于int32), int/uint ,int8/uint8 ,int16/uint16 ,int32/uint32 ,int64/uint64

浮点数: float32 ,float64, complex64 ,complex128

array(值类型)、slice、map、chan(引用类型)

条件循环语句

if 、switch

if用法注意点

package mainimport "fmt"func main() {/* 定义局部变量 */var a int = 10/* 使用 if 语句判断布尔表达式 */if a < 20 {/* 如果条件为 true 则执行以下语句 */fmt.Printf("a 小于 20\n" )}fmt.Printf("a 的值为 : %d\n", a)
}

 

switch用法注意点

Go 语言 switch 语句 | 菜鸟教程

switch简单demo
package mainimport "fmt"func main() {var grade string = "B"var marks int = 90switch marks {case 90:grade = "A"case 80:grade = "B"case 50, 60, 70:grade = "C"default:grade = "D"}switch {case grade == "A":fmt.Println("优秀")default:fmt.Println("懒得写了")}fmt.Println(grade)
}

switch判断interface的类型
package mainimport "fmt"func main() {var x interface{}x = "你好"switch i := x.(type) {case nil:fmt.Println("nil")case int:fmt.Printf("x is an integer: %d\n", i)case string:fmt.Printf("x is a string: %s\n", i)default:fmt.Println("x is of unknown type")}
}
fallthrough加在后面可以不加判断强制执行后面的case
package mainimport "fmt"func main() {switch {case false:fmt.Println("1、case 条件语句为 false")//fallthroughcase true:fmt.Println("2、case 条件语句为 true")fallthroughcase false:fmt.Println("3、case 条件语句为 false")fallthroughcase true:fmt.Println("4、case 条件语句为 true")//fallthroughcase true:fmt.Println("5、case 条件语句为 false")fallthroughdefault:fmt.Println("6、默认 case")}
}

 

string

string、rune、byte之间的关系

参考链接:https://www.cnblogs.com/cheyunhua/p/16007219.html

理解go中rune数据类型 - 知乎

首先查看官方包的定义

可以看出byte区分字节值和uint8,rune区分字符值和int32

// byte is an alias for uint8 and is equivalent to uint8 in all ways. It is
// used, by convention, to distinguish byte values from 8-bit unsigned
// integer values.
type byte = uint8// rune is an alias for int32 and is equivalent to int32 in all ways. It is
// used, by convention, to distinguish character values from integer values.
type rune = int32

UTF-8 是 Unicode 的一种实现方式,是一种针对 Unicode 可变长度的字符编码,它定义了字符串具体以何种方式存储在内存中。UFT-8 使用 1 ~ 4 为每个字符编码。

rune对应于int32,也就是这个unicode码点

byte对应于原始字节(8位所以0~255),也就是原始字节

go中的string类型采用UTF-8编码,这是一种可变长的 Unicode 字符编码方案,几乎可以表示世界任何字符。

统计字节数:len

统计Unicode字符数:utf8.RuneCountInString()

package mainimport ("fmt""unicode/utf8"
)func main() {a := "Go语言"fmt.Println("字节数:", len(a))//utf8计算unicode字符数fmt.Println("Unicode字符数:", utf8.RuneCountInString(a))fmt.Println("[]Rune:", len([]rune(a)))// 遍历字符串中的字符 char为rune类型fmt.Println("遍历字符串中的字符:")for _, char := range a {//测试当前rune类型fmt.Printf("%T %c\n", char, char)}fmt.Println()
}

字符串之间比较

Strings.Compare包返回-1,0,1分别< ,== ,>

常用其他方法

package mainimport ("fmt""strings"
)func main() {name := "go语言爱好者-l"//是否包含contain := strings.Contains(name, "爱好")fmt.Println(contain)//出现次数count := strings.Count(name, "g")fmt.Println(count)//以sep分割s := strings.Split(name, "-")fmt.Println(s)//前后缀goHead := strings.HasPrefix(name, "go语言")lEnd := strings.HasSuffix(name, "l")fmt.Println(goHead, lEnd)//查询字串出现位置,注意是byte的索引index := strings.Index(name, "爱好者") //8fmt.Println(index)//索引输出rune//for key, val := range name {//    fmt.Println(key, "--->", val)//}//索引输出byte,更细节,具体看当时文档 string rune byte之间的关系//for i := 0; i < len(name); i++ {//    fmt.Println(i, "-->", name[i])//}//索引到runeindexRune := strings.IndexRune(name, 35328)fmt.Println(indexRune)//替换,-1则替换所有fmt.Println(strings.Replace(name, "go", "java", -1))//大小写转换fmt.Println(strings.ToUpper("go"))fmt.Println(strings.ToLower("JAVA"))//去掉前后的符合,其他的用到了自己查询fmt.Println(strings.Trim(" 你好,啊 ", " "))
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/643729.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Vitis HLS 学习笔记--对于启动时间间隔(II)的理解

目录 1. II的重要性 2. 案例分析 3. 总结 1. II的重要性 在Vitis HLS&#xff08;High-Level Synthesis&#xff09;中&#xff0c;启动时间间隔&#xff08;II&#xff0c;Iteration Interval&#xff09;是一个非常关键的概念&#xff0c;对于实现高性能的硬件加速器设计…

DS进阶:AVL树和红黑树

一、AVL树 1.1 AVL树的概念 二叉搜索树&#xff08;BST&#xff09;虽可以缩短查找的效率&#xff0c;但如果数据有序或接近有序二叉搜索树将退化为单支树&#xff0c;查找元素相当于在顺序表中搜索元素&#xff0c;效率低下。因此&#xff0c;两位俄罗斯的数学家G.M.Adelson-…

【linux】chmod权限开放(整个文件夹)

文章目录 起因权限查看权限修改 失败权限修改成功 起因 想要共享conda环境给同事&#xff0c;发现同事没权限。 权限查看 ls #查看当前目录 ls -l # 查看当前目录的东西和权限正常情况下是显示 三个rwx分别属于user&#xff0c;group&#xff0c;others 前面第一个rwx 是针…

刷题之Leetcode242题(超级详细)

242.有效的字母异位词 力扣题目链接(opens new window)https://leetcode.cn/problems/valid-anagram/ 给定两个字符串 s 和 t &#xff0c;编写一个函数来判断 t 是否是 s 的字母异位词。 示例 1: 输入: s "anagram", t "nagaram" 输出: true 示例 2…

HarmonyOS开发案例:【音乐播放器】

介绍 使用ArkTS语言实现了一个简易的音乐播放器应用&#xff0c;主要包含以下功能&#xff1a; 播放应用中的音频资源文件&#xff0c;并可进行上一曲、下一曲、播放、暂停、切换播放模式&#xff08;顺序播放、单曲循环、随机播放&#xff09;等操作。结合后台任务管理模块&…

QML 不同风格和主题的切换

Quick程序提供了方便的用于切换不同风格和主题的配置文件&#xff0c;如果没有设计稿&#xff0c;又想界面没那么丑&#xff0c;那么可以用这套配置&#xff0c;让应用看起来相对专业一点。 一&#xff0c;在 qrc 资源文件中添加 qtquickcontrols2.conf 文件。 二&#xff0c;…

[Algorithm][前缀和][模板 一维前缀和][模板 二维前缀和][寻找数组中心下标][除自身以外数组的乘积] + 前缀和原理 + 前缀和模板

目录 0.原理讲解1.[模板]一维前缀和1.题目链接2.模板代码实现 2.[模板]二维前缀和1.题目链接2.算法原理讲解3.模板代码实现 3.寻找数组的中心下标1.题目链接2.算法原理详解3.代码实现 4.除自身以外数组的乘积1.题目链接2.算法原理详解3.代码实现 0.原理讲解 前缀和&#xff1a;…

(ICML-2021)从自然语言监督中学习可迁移的视觉模型

从自然语言监督中学习可迁移的视觉模型 Title&#xff1a;Learning Transferable Visual Models From Natural Language Supervision paper是OpenAI发表在ICML 21的工作 paper链接 Abstract SOTA计算机视觉系统经过训练可以预测一组固定的预定目标类别。这种受限的监督形式限制…

数新大数据平台迁移解决方案

随着企业的发展和数字化转型的不断深入&#xff0c;企业数据平台建设过去很多年&#xff0c;技术和架构过于落后&#xff0c;原有的大数据平台越来越难以满足业务需求。而在新的技术架构大数据平台的升级过程中&#xff0c;对数据和任务迁移的一致性、完整性有很高的要求&#…

P1106 删数问题

本题为洛谷&#xff1a; #include<iostream> #include<string> using namespace std; int main(){string n;int k;cin>>n>>k;while(k--){for(int i0;i<n.length();i){if(n[i]>n[i1]){n.erase(i,1); break;} }for(int i0;i<n.length()-1&&…

DeepFaceLab小白教程:视频换脸过程

合适那些人阅读&#xff1f; 适合从未使用过DeepFaceLab的群体。 如果你想基于DeepFaceLab完成一次视频换脸的操作&#xff0c;可以看本篇。 下载方式 GitHub https://github.com/iperov/DeepFaceLab 我是用motrix下载。 网盘 https://pan.baidu.com/share/init?surlO4…

百度GL地图实现选点获取经纬度并且地址逆解析

index.html引入 <script src"https://api.map.baidu.com/api?typewebgl&v1.0&ak你的ak"></script>组件使用 <el-input:disabled"[详情].includes(title)"v-model"formData.site"placeholder""><templat…