持续更新:Go语言常用语句总结

简介: 持续更新:Go语言常用语句总结

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、切片等)


持续更新…

相关文章
|
7天前
|
存储 Go 索引
go语言中数组和切片
go语言中数组和切片
20 7
|
7天前
|
Go 开发工具
百炼-千问模型通过openai接口构建assistant 等 go语言
由于阿里百炼平台通义千问大模型没有完善的go语言兼容openapi示例,并且官方答复assistant是不兼容openapi sdk的。 实际使用中发现是能够支持的,所以自己写了一个demo test示例,给大家做一个参考。
|
7天前
|
程序员 Go
go语言中结构体(Struct)
go语言中结构体(Struct)
84 71
|
6天前
|
存储 Go 索引
go语言中的数组(Array)
go语言中的数组(Array)
89 67
|
9天前
|
Go 索引
go语言for遍历数组或切片
go语言for遍历数组或切片
82 62
|
11天前
|
并行计算 安全 Go
Go语言中的并发编程:掌握goroutines和channels####
本文深入探讨了Go语言中并发编程的核心概念——goroutine和channel。不同于传统的线程模型,Go通过轻量级的goroutine和通信机制channel,实现了高效的并发处理。我们将从基础概念开始,逐步深入到实际应用案例,揭示如何在Go语言中优雅地实现并发控制和数据同步。 ####
|
7天前
|
存储 Go
go语言中映射
go语言中映射
24 11
|
9天前
|
Go
go语言for遍历映射(map)
go语言for遍历映射(map)
23 12
|
8天前
|
Go 索引
go语言使用索引遍历
go语言使用索引遍历
17 9
|
12天前
|
安全 Serverless Go
Go语言中的并发编程:深入理解与实践####
本文旨在为读者提供一个关于Go语言并发编程的全面指南。我们将从并发的基本概念讲起,逐步深入到Go语言特有的goroutine和channel机制,探讨它们如何简化多线程编程的复杂性。通过实例演示和代码分析,本文将揭示Go语言在处理并发任务时的优势,以及如何在实际项目中高效利用这些特性来提升性能和响应速度。无论你是Go语言的初学者还是有一定经验的开发者,本文都将为你提供有价值的见解和实用的技巧。 ####