第三节课 运算、字符串连接、类型转换、断言

视频教程地址

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)// utf8 含有非 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的常量、枚举、类型的讲解

你可能感兴趣的:(golang,学习教程,golang)