天天看点

go interface转int_[Go菜牛系列]25个关键字用法示例

var & const:声明变量(var)和常量(const)

var num intconst str string = "test"// 批量定义变量var (username string = "xiaomo"emails []string)// 批量定义常量const (host = "127.0.0.1"port = 8080)
           
  • package & import: 包与导入
// 定义包名称package mainimport ("fmt" // 导入fmt包micro "github.com/micro/go-micro" // 给包名取别名)
           
  • if/else, switch/case/default/fallthrough, for/continue/break, goto等流程控制
// if-elseok := trueif ok {} else {}// for loopfor i := 0; i < 10; i++ {if i < 3 {continue}if i > 5 {break}}// switch-casevar i = 0switch i {case 0, 1:fmt.Println("in case 1")    // 加fallthrough表示会继续往下匹配    // fallthroughcase 2:fmt.Println("in case 2")default:fmt.Println("other")}
           
  • func: 定义函数和方法
// 小写开头的函数只能在包内使用func test1() {}// 大写开头的函数可以导出到其他包使用func Test2() {}// 带入参,返回值的函数func test3(age int) int {}// 支持多个返回值func test4(name string, pwd string) (int ,error) {}// 相同类型参数的省略用法func test5(name, pwd, addr string, age int) (int, error) {}// 可变长入参func sum(nums ...int) {}// sum函数调用方式:// arr := []int{1, 2, 3}// sum(arr...)
           
  • return :用于从函数返回
func test1() {if true {return}}func test2() bool {// ...return true}
           
  • defer:在函数退出之前执行某段逻辑
func test(a int) {defer func() {fmt.Println(a)}a++}
           
  • go : 用于并发
func test1() {}func test2() {go test1() // 创建goroutine, test1和test2函数将并发执行// do something other}
           
  • chan: 和goroutine配合使用,用于数据同步
m := make(chan int) // 无缓冲管道n := make(chan int, 6) // 有缓冲管道
           
  • select: 用来监听和channel有关的IO操作
select {case 
           
  • type:用于声明自定义类型

参考如下interface/struct的用法

  • interface:用于定义接口
type Teacher interface {    Speak() string    Lesson() string}
           
  • struct: 用于定义抽象数据类型
type Student struct {Level intName string}
           
  • map: 用于定义map类型数据
//定义一个key为string,value为int类型的mapvar data1 map[string]int// 定义一个key为string,value为任意类型的mapvar data2 map[string]interface{}
           
  • range:迭代读取slice/map/channel类型的元素数据
// 遍历数组arr := [3]int {1, 2, 3}for i, n := range arr {    fmt.Println(i, n)}// 遍历切片sli := []int{2, 3, 4, 5}for i, n := range sli {    fmt.Println(i, n)}// 遍历mapm := map[string]int{"Id":1, "Count":2}for k, v := range m {    fmt.Println(k, v)}
           
go interface转int_[Go菜牛系列]25个关键字用法示例