视频教程地址
https://www.bilibili.com/video/BV1aU4y1h7dE/
数字运算
var i int
var k int
i = 2
k = 3
k = i+k // k = 5
fmt.Println(k)
k += i // k = 7
fmt.Println(k)
i++ // i = 3
fmt.Println(i)
字符串的简单连接
str1 := "hello"
str2 := " world"
str3 = str1+str3
少量的字符串相连可以这么操作,如果是大量的可以用 strings.Builder 或 bytes.Buffer
获取值类型的指针
var i int
i = 2
k := &i // 把 int类型的i 的地址赋给 变量 k
*k = 4 // 往k 指向的内存赋值
k1 := new(int) // 建一个空的 int 类型的地址赋给 k1
*k1 = 4
fmt.Printf("i=%d, *k1=%d\n;k1=%v", i, *k1, k1)
类型转换
数据类型不一样,不能直接赋值,需要转换
var i int8
var k int32
i = 8
k = int32(i) // 类型不一样
b := []byte{'a','b','c'}
var str string
str = string(b) // 把 []byte 转化成字符串
var c []byte
c = []byte(str) // 把字符串转化成 []byte 切片类型
fmt.Println(str, "aaa", k, "c:", c)
for i, k := range c {
fmt.Printf("%v:%v\n", i, string(k))
}
// int() string() []byte()
str := "中国你最强abc"
b := []byte(str)// ascii
bb := []rune(str)// unicode 含有非 ascii 编码的字符串,最好用 rune切分字符串
for _, k := range bb {
fmt.Printf("%v\n", string(k))
}
for i, k := range b {
fmt.Printf("%v=%v\n", i, string(k))
}
str := "abc"
k := strconv.Itoa(i) // 把数字转化成字符串
str += k
s,_ := strconv.Atoi(k) //把数字字符串转化成数字
fmt.Printf("%T--%v\n", s, s)
类型断言
断言是把interface{} 类型转化成其它类型
var b interface{}
b = "abc"
c, ok := b.(string) // 返回的第二个值是否判断类型正确 是个bool值,是-true 否-false
fmt.Printf("%T,%v,%v\n", c, c, ok)
上一篇: golang的常量、枚举、类型的讲解