【golang】1.0 go语言入门:数据类型、常量、枚举

基础内容:

image.png

image.png

image.png

goland下载安装地址:
Go下载 - Go语言中文网 - Golang中文社区 (studygolang.com)
国内镜像
七牛云 - Goproxy.cn
打开你的终端并执行

$ go env -w GO111MODULE=on
$ go env -w GOPROXY=https://goproxy.cn,direct

开发软件

Goland/Intellij Idea+Go 插件
vs code

新建项目。
new Project
格式化:


image.png

image.png

创建go.mod

module learngo

go 1.18

版本和安装的go版本保持一致。
新建\learngo\hello.go

package main

import "fmt"

func main() {
    fmt.Println("hello world")
}

运行配置


image.png

也可以如下运行:


image.png

基础语法

package main

import "fmt"

func variableZeroValue() {
    var a int
    var s string
    fmt.Printf("%d %q\n", a, s) //百分号q会把空串的引号打出来
}

func main() {
    fmt.Println("hello world basic")
    variableZeroValue()
}
image.png

go语言变量定义了一定要用到,不然就会报错。

package main

import "fmt"

func variableZeroValue() {
    var a int
    var s string
    fmt.Printf("%d %q\n", a, s) //百分号q会把空串的引号打出来
}
func variableInitialValue() {
    var a int = 3
    var s string = "初始化"
    fmt.Println(a, s)
}

func main() {
    fmt.Println("hello world basic")
    variableInitialValue()
}

image.png

或者可以这样:

package main

import "fmt"

func variableZeroValue() {
    var a int
    var s string
    fmt.Printf("%d %q\n", a, s) //百分号q会把空串的引号打出来
}
func variableInitialValue() {
    var a, b int = 3, 4
    var s string = "初始化"
    fmt.Println(a, b, s)
}

func main() {
    fmt.Println("hello world basic")
    variableInitialValue()
}

go也可以自动推断数据的基本类型:

package main

import "fmt"

func variableZeroValue() {
    var a int
    var s string
    fmt.Printf("%d %q\n", a, s) //百分号q会把空串的引号打出来
}
func variableInitialValue() {
    var a, b int = 3, 4
    var s string = "初始化"
    fmt.Println(a, b, s)
}

func variableTypeDeduction() {
    var a, b, c, d = 3, 4, true, "def"
    fmt.Println(a, b, c, d)
}
func variableShorter() {
    a, b, c, d := 3, 4, true, "def" // 第一次变量的方式
    fmt.Println(a, b, c, d)
}
func main() {
    fmt.Println("hello world basic")
    variableZeroValue()
    variableInitialValue()
    variableTypeDeduction()
    variableShorter()
}
image.png

内建变量类型

也就是基础数据类型
char在多国语言中一字节存在很多坑,所以go用了rune,比如utf-8是4字节的字符来代替rune(32位)


image.png

complex就是复数,complex64实部和虚部都是32位,
complex128实部和虚部都是64位。
至于什么是复数,要么高中以上文化,要么百度学习。


image.png
image.png

image.png
image.png

image.png
package main

import (
    "fmt"
    "math"
    "math/cmplx"
)

func variableZeroValue() {
    var a int
    var s string
    fmt.Printf("%d %q\n", a, s) //百分号q会把空串的引号打出来
}
func variableInitialValue() {
    var a, b int = 3, 4
    var s string = "初始化"
    fmt.Println(a, b, s)
}

func variableTypeDeduction() {
    var a, b, c, d = 3, 4, true, "def"
    fmt.Println(a, b, c, d)
}
func variableShorter() {
    a, b, c, d := 3, 4, true, "def" // 第一次变量的方式
    fmt.Println(a, b, c, d)
}

func euler() {
    c := 3 + 4i
    fmt.Println(cmplx.Abs(c))
    // 验证欧拉公式
    fmt.Println(cmplx.Pow(math.E, 1i*math.Pi) + 1)
    fmt.Println(cmplx.Exp(1i*math.Pi) + 1)
    fmt.Printf("%.3f\n", cmplx.Exp(1i*math.Pi)+1)
}

func main() {
    fmt.Println("hello world basic")
    variableZeroValue()
    variableInitialValue()
    variableTypeDeduction()
    variableShorter()

    euler()
}

image.png

强制类型转换

go语言只有强制类型转换,没有隐式类型转换。

package main

import (
    "fmt"
    "math"
    "math/cmplx"
)

func variableZeroValue() {
    var a int
    var s string
    fmt.Printf("%d %q\n", a, s) //百分号q会把空串的引号打出来
}
func variableInitialValue() {
    var a, b int = 3, 4
    var s string = "初始化"
    fmt.Println(a, b, s)
}

func variableTypeDeduction() {
    var a, b, c, d = 3, 4, true, "def"
    fmt.Println(a, b, c, d)
}
func variableShorter() {
    a, b, c, d := 3, 4, true, "def" // 第一次变量的方式
    fmt.Println(a, b, c, d)
}

func euler() {
    c := 3 + 4i
    fmt.Println(cmplx.Abs(c))
    // 验证欧拉公式
    fmt.Println(cmplx.Pow(math.E, 1i*math.Pi) + 1)
    fmt.Println(cmplx.Exp(1i*math.Pi) + 1)
    fmt.Printf("%.3f\n", cmplx.Exp(1i*math.Pi)+1)
}

func triangle() {
    var a, b int = 3, 4
    var c int
    c = int(math.Sqrt(float64(a*a + b*b)))
    fmt.Println(c)
}

func main() {
    fmt.Println("hello world basic")
    variableZeroValue()
    variableInitialValue()
    variableTypeDeduction()
    variableShorter()

    euler()
    triangle()
}
image.png

常量

go语言的字母大写是有含义的,所以我们在定义常量的时候,不会去大写常量命名。

package main

import (
    "fmt"
    "math"
    "math/cmplx"
)

func variableZeroValue() {
    var a int
    var s string
    fmt.Printf("%d %q\n", a, s) //百分号q会把空串的引号打出来
}
func variableInitialValue() {
    var a, b int = 3, 4
    var s string = "初始化"
    fmt.Println(a, b, s)
}

func variableTypeDeduction() {
    var a, b, c, d = 3, 4, true, "def"
    fmt.Println(a, b, c, d)
}
func variableShorter() {
    a, b, c, d := 3, 4, true, "def" // 第一次变量的方式
    fmt.Println(a, b, c, d)
}

func euler() {
    c := 3 + 4i
    fmt.Println(cmplx.Abs(c))
    // 验证欧拉公式
    fmt.Println(cmplx.Pow(math.E, 1i*math.Pi) + 1)
    fmt.Println(cmplx.Exp(1i*math.Pi) + 1)
    fmt.Printf("%.3f\n", cmplx.Exp(1i*math.Pi)+1)
}

func triangle() {
    var a, b int = 3, 4
    var c int
    c = int(math.Sqrt(float64(a*a + b*b)))
    fmt.Println(c)
}

func consts() {
    //const filename = "abc.txt"
    //const a, b = 3, 4
    const (
        filename = "abc.txt"
        a, b     = 3, 4
    )
    var c int
    c = int(math.Sqrt(float64(a*a + b*b)))
    fmt.Println(filename, c)
}

func main() {
    //fmt.Println("hello world basic")
    //variableZeroValue()
    //variableInitialValue()
    //variableTypeDeduction()
    //variableShorter()
    //
    //euler()
    //triangle()
    consts()
}

image.png

枚举类型

go语言没有特定的枚举类型,一般通过常量来定义。

...

func enums() {
    //const (
    //  cpp    = 0
    //  java   = 1
    //  python = 2
    //  golang = 3
    //)
    // iota,表示为自增值
    const (
        cpp = iota
        java
        python
        golang
    )

    fmt.Println(cpp,
        java,
        python,
        golang)
}

func main() {
    //fmt.Println("hello world basic")
    //variableZeroValue()
    //variableInitialValue()
    //variableTypeDeduction()
    //variableShorter()
    //
    //euler()
    //triangle()
    //consts()
    enums()
}
image.png

iota,自增长,还有更复杂的用法。

func enums() {
    //const (
    //  cpp    = 0
    //  java   = 1
    //  python = 2
    //  golang = 3
    //)
    // iota,表示为自增值
    const (
        cpp = iota
        java
        python
        golang
    )

    fmt.Println(cpp,
        java,
        python,
        golang)

    // b,kb,mb,gb,tb,pb
    const (
        b = 1 << (10 * iota) //左移10倍
        kb
        mb
        gb
        tb
        pb
    )
    fmt.Println(
        b,
        mb,
        gb,
        tb,
        pb)
}

func main() {
    //fmt.Println("hello world basic")
    //variableZeroValue()
    //variableInitialValue()
    //variableTypeDeduction()
    //variableShorter()
    //
    //euler()
    //triangle()
    //consts()
    enums()
}
image.png

本文章由javascript技术分享原创和收集

发表评论 (审核通过后显示评论):