关于go:golang从入门到精通一变量定义

  1. 变量定义

    • var x String = “abc”;
    • x := 123 暗藏类型,主动判断类型
    //批量定义
    var ( 
     a string = "1"
     b int = 1
    )
    
    const (
     a = 1
     b = "abc"
    )
    
    const (
     s = iota  //iota计数器 常量计数器,会重置为0,从新计数, 每隔一行加1,如果有其余定义占行,会再累加
     i
     k
    )
    fmt.Println(s) //0
    fmt.Println(i) //1
    fmt.Println(k) //2
  2. 常量定义 const 不须要指定类型 const abc = 123
  3. 自定义类型

    //定义方法类型
    type f func() 
    
    //定义接口类型
    type i interface {
     
    }
    //定义构造体
    type people struct {
     Name string
     age int
    }
    
    t := people{
     name:"ss"
     age:10
    }
  4. 函数、办法定义

    //办法定义, 依据构造体定义
    func (u people) getName() string {
     return u.name
    }
    //先创立构造体,能力应用办法,可设想成 new
    t := people{  //调用时,t会传递给u
     name:"ss"
     age:10
    }
    t.getName()   
    
    
    // 应用接口,须要借助构造体,先定义个类型,是接口类型,而后构造体实现了接口的办法,这个构造体就相当于接口的继承,而后应用构造体调用办法
    type Retriever interface {
     Get(string) string
    }
    
    var r Retriever         // Retriever接口
    r = re.Retriever{"abc"} //Retriever构造体实现了Retriever接口 能够当做Retriever接口传入
    fmt.Println(r.Get("abc"))
    

    案例

    package main
    
    import "fmt"
    
    var aa int = 1
    var bb string = "函数外定义变量  包内可见"
    
    // 函数外不能应用:=
    var (
     cc string = "应用var定义多个变量,只写一次var"
     dd int    = 1
    )
    
    func main() {
     fmt.Println("hello World")
     variable()
     fmt.Println(aa, bb, cc, dd)
    }
    
    func variable() {
     var a int // 先定义名称  再定义类型   例如定义一个变量个别会先想到名字  再想到类型
     var s string
     fmt.Println(a, s) // int 的初始值是0  string的初始值时"" 在c语言中值不固定,在java中 不论任何类型初始值都为null
    
     var b, c int = 4, 5 // 能够一次定义多个变量,变量必须应用,不应用会报错   防止定义无用变量
    
     var str = "abc" // 能够不定义类型,会本人推断
    
     fmt.Println(b, c, str)
    
     var d, e, f = 1, "e变量值", true // 能够同时给不同类型的变量赋值,不能多个变量定义不同的类型并赋初始值  var a int, b int 这样是不行的
    
     g, h := true, 10 // 首次定义应用:= 推断类型,代替var ,:= 只能在函数内应用,不能在函数外应用
    
     fmt.Println(d, e, f, g, h)
    
     fmt.Printf("%d %q", a, s) // %q和%s区别: %q 会打印出"" 对字符串进行包裹
    }

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理