定义变量

   在Go语言中定义变量比较特别,var 变量名 变量类型和其他语言相反.定义变量后都会有默认值,例如int类型默认为0,string默认为空.如下调用variable函数后打印结果为0.

通过:=定义变量必须在函数内.而var可在函数内外定义

标准格式

package main

import "fmt"

// 可在外部使用var标准格式定义
var hello string

func variable() {
    // 定义变量及类型,不赋值
    var sex int
    // 定义变量,自动判断类型
    var name = "QvBiLam"
    // 定义多个不同类型的变量
    var hobby, skill, phone, life = "Golang", "php", 1937, true
    // 定义多个相同类型变量,赋值
    var weight, height int = 175, 120
    fmt.Println(life, sex, phone)
    fmt.Println("Hello Myname is " + name)
    fmt.Println("My hoby is" + hobby + "and my skill is " + skill)
    fmt.Println("My weight is", weight, "My height is", height)
}

// main包下必须要有main方法
func main() {
    variable()
}
// 执行go run test.go

简短格式

package main

import "fmt"

// 不可在外部使用简短格式定义变量

func variable() {
    // 定义多个不同类型的变量,:=可以理解为相当于var.只能在声明的时候用
    a,b,c := 1,2,3
    // 变量重赋值
    a = 4
    fmt.Println(a,b,c)
}

// main包下必须要有main方法
func main() {
    variable()
}
// 执行go run test.go

Go中定义的变量必须要使用到,不用会出现错误

// 修改variable方法
func variable() {
    // 定义sex但不使用用
    var sex int
}
fmt.Println(age, name)
// 执行go run test.go 出现如下错误
# command-line-arguments
./test.go:8:6: sex declared and not used

类型转换

只支持强制转换

根据勾股定理c*c = a*a + b*b算斜边的长度

// 首选需要了解开平方函数传参.
// 传参为float64位
// 返回值float64
func Sqrt(x float64) float64

// Note: Sqrt is implemented in assembly on some systems.
// Others have assembly stubs that jump to func sqrt below.
// On systems where Sqrt is a single instruction, the compiler
// may turn a direct call into a direct use of that instruction instead.

示例

package main

import (
    "fmt"
    "math"
)

func variable() {
    // 定义a,b 为int类型
    var a, b int = 3, 4
    // 定义c 为int类型
    var c int
    // 首先将(a,b)的结果转为float64.因为开始c已经定义为int
    // 再将float64位的开平方结果转换成int类型
    c = int(math.Sqrt(float64(a*a + b*b)))
    fmt.Print(c)
}

// main包下必须要有main方法
func main() {
    variable()
}

// 运行文件 go run test.go

常量定义

常量定义后无法修改,定义后可以不使用

  类似于变量,可以在声明常量的时候指定数据类型,也可以不指定数据类型.

package main

import "fmt"

func myConst(){
    // 定义单个变量
    const A = 0
    // 定义多个变量
    const (
        B = 1
        C = 2
    )
    // 枚举自增变量
    const (
        // iota为自增1.当想获取2,4,6
        // 下划线为忽略的值
            _ = 2 * iota    //从空开始
            D
            E
            F
    )
    fmt.Println(A,B,C)    // 输出0 1 2
    fmt.Println(D,E,F,) // 输出2 4 6
}

// n
func main() {
    myConst()
}

 在没有定义数据类型在使用的时候会自动进行类型转换(个人理解,机制没去了解不是很懂).而定义了数据类型就需要进行强制转换.

package main

import "math"

func myConst() {
    // 定义常量
    const A, B = 3, 4
    var c int
    const NAME = "QvBiLam"
    // 没有将AB的结果进行转换就可以直接当成float64的用
    c = int(math.Sqrt(A*A + B*B))
    print(c)
}

// main包下必须要有main方法
func main() {
    myConst()
}
Last modification:March 18th, 2020 at 02:32 pm