1、把其他类型转化成字符串类型
例:把指针值转换成字符串赋值给一个变量
ListHostnameip := fmt.Sprint(*List)
2、使用结构体构造函数,使用指针类型节约内存开销
type person struct { city,name string age int } func newperson(city1,name1 string,age1 int) *person { return &person{ city: city1, name: name1, age: age1, } } func main() { p1 := newperson("大连","dwz",27) p2 := p1.name fmt.Println(p1) fmt.Println(p2)
运行结果:&{大连 dwz 27} dwz
3、结构体不能使用自动推导,可使用var定义
type person struct { city,name string age int } func main() { var p2 person //var函数定义p2是person结构体类型 p2.name = "eden" fmt.Println(p2.name) }
运行结果:eden
4、去符号操作
比如获得的API值需要去特殊符号
1、把字符串 s 左边的+ 右边的- 去掉
package main import ( "fmt" "strings" ) func main() { s := "++-+1234567-+--" //去除首部第一次匹配到的关于“+”符号的,和尾部第一次匹配到的关于“-“符号的字符 s1 := strings.TrimPrefix(s,"+") s2 := strings.TrimSuffix(s1,"-") fmt.Printf("%v\n", s2) //结果是:+-+1234567-+- }
2、去除首部匹配到的所有关于“+”符号(匹配不到截至),和尾部关于“-“符号的所有字符(匹配不到截至)
package main import ( "fmt" "strings" ) func main() { s := "++-+1234567-+--" //去除首部分关于“+”符号的,和尾部关于“-“符号的字符 s1 := strings.TrimLeft(s,"+") s2 := strings.TrimRight(s1,"-") fmt.Printf("%v\n", s2) //结果是:-+1234567-+ }
3、把所有符号全部去掉
使用strings.ReplaceAll 替换所有匹配的字符,如果把匹配到的字符全部替换成空格,相当于删除所有匹配的字符。
package main import ( "strings" "fmt" ) func main() { str := "map[1,2,3,4,5,6]" str1 :=strings.ReplaceAll(str,"[","") str2 :=strings.ReplaceAll(str1,"map","") str3 := strings.ReplaceAll(str2,"]","") fmt.Println(str3) }
运行结果:1,2,3,4,5,6
5、常见接口创建 由结构体–>方法–>接口
先来看下结构体、方法、接口的格式
结构体
结构体定义需要使用 type 和 struct 语句。struct 语句定义一个新的数据类型,结构体中有一个或多个成员。type 语句设定了结构体的名称。结构体的格式如下:
type struct_name_variable struct { member definition member definition ... member definition }
方法
Go 语言中同时有函数和方法。一个方法就是一个包含了接受者的函数,接受者可以是命名类型或者结构体类型的一个值或者是一个指针。所有给定类型的方法属于该类型的方法集。语法格式如下:
func (variable_name variable_data_type) function_name() [return_type]{ /* 函数体*/ }
接口
Go 语言提供了另外一种数据类型即接口,它把所有的具有共性的方法定义在一起,任何其他类型只要实现了这些方法就是实现了这个接口。
/* 定义接口 */ type interface_name interface { method_name1 [return_type] method_name2 [return_type] method_name3 [return_type] ... method_namen [return_type] } /* 定义结构体 */ type struct_name struct { /* variables */ } /* 实现接口方法 */ func (struct_name_variable struct_name) method_name1() [return_type] { /* 方法实现 */ } ... func (struct_name_variable struct_name) method_namen() [return_type] { /* 方法实现*/ }
接口实现 创建结构体—>方法—>接口调用
e.g
package main import "fmt" type says interface { say1() say2() } type dog struct { } type cat struct { } func (d dog) say1() { fmt.Println("汪汪~") } func (c cat) say2() { fmt.Println("喵喵~") } func main() { da1 := new(dog) da1.say1() }
6、字符串和整型之间的转换
string转成int:
int, err := strconv.Atoi(string)
string转成int64:
int64, err := strconv.ParseInt(string, 10, 64) • 1
int转成string:
string := strconv.Itoa(int)
int64转成string:
string := strconv.FormatInt(int64,10) • 1
7、new只能初始化值类型(int、string等),make只能初始化引用类型(map、切片等)
持续更新…