今天边学习,边在Golang中打代码练习,虽然比以前只靠看的方式学用时更久,但感觉更有效,下面附上我练习的代码:
package main
import (
"fmt"
"strconv"
"strings"
"unicode/utf8"
)
func main(){
fmt.Println("1、字典:")
//定义字典
var m = map[string]int{}
m1 := make(map[string]int)
m2 := map[string]string{
"you": "people",
"I": "robot",
}
//字典操作
//添加元素
m1["key1"] = 1
m1["key2"] = 2
m1["key3"] = 3
m["tt"] = 3
fmt.Println(m)
fmt.Println(m1)
fmt.Println(m2)
//获取字典长度
fmt.Println(len(m1))
//判断键值对是否存在
if v, ok := m1["key3"];ok{
fmt.Println(v)
}
if v, ok := m1["key1"];ok{
fmt.Println(v)
}
//字典遍历(默认无序遍历)
for key, value := range m1{
fmt.Println("key:", key, "value:", value)
}
//删除元素
delete(m1,"key3")
fmt.Println(m1)
m1["key4"] = 4
//将函数作为值类型存入字典中
m4 := make(map[string]func(a, b int)int)
m4["add"] = func(a, b int) int{
return a + b
}
m4["multi"] = func(a, b int)int{
return a * b
}
fmt.Println(m4["add"](3,4))
fmt.Println(m4["multi"](3,4))
//字符串
fmt.Println("\n 2、字符串:")
//定义
s := "helloworld"
//s[0] = 'H' Go创建字符串后不可变,这样的赋值操作不允许
//修改字符串
a := "helloworld"
b := []byte(s)
b[0] = 'H'
a = string(b)
fmt.Printf("修改前:%v,修改后的字符串:%v\n", s, a)
//若字符串包含中文,不能直接用byte切片,可用下列方式:
s = "hello 中国"
fmt.Println(len(s)) //12
fmt.Println(utf8.RuneCountInString(s)) //8
b2 := []byte(s)
for i := 0; i < len(b2); i++{
fmt.Printf("%c", b2[i])
}//hello ä¸å›½ 中文乱码
fmt.Println()
r := []rune(s)
for i := 0; i < len(r); i++{
fmt.Printf("%c", r[i])
}//hello,中国
//strings包
var ss string = "This is an example of a string"
//判断是否以Th开头
fmt.Printf("\n%t\n", strings.HasPrefix(ss, "Th"))
//判断是否以aa结尾
fmt.Printf("%t\n", strings.HasSuffix(ss, "Th"))
//判断是否包含“an”字串
fmt.Printf("%t\n", strings.Contains(ss, "an"))
//strconv包实现了基本数据类型与字符串之间的转换
numInt, err := strconv.Atoi("-43") //将字符串转为int,若转换失败则返回对应的error值
s32 := strconv.Itoa(-43) //将int型转为字符串
fmt.Printf("num_int: %d, error: %v, s32: %v\n", numInt, err, s32)
fmt.Println("\n End: Go to have a good day!")
}