• GO编程基础


    开发环境配置:

    (1).配置环境变量

    (1). 新建 变量名:GOBIN 变量值 :c:goin

    (2). 新建 变量名:GOARCH 变量值:386

    (3). 新建 变量名:GOOS 变量值:windows

    (4). 新建 变量名: GOROOT 变量值:c:go

    (5). 编辑 Path 在Path的变量值的最后加上 %GOBIN%
     
    如果是msi安装文件,Go语言的环境变量会自动设置好。如果后面的测试无法通过,可以重新设置环境变量。
    本人安装msi,发现go命令不能识别,查看环境变量后,发现只有path和GOROOT ,另外两个没有,所以自己新建并且设置了一下,测试通过。
     
    (2).测试安装是否成功 
     
    打开Windows中的命令提示符(cmd.exe)执行命令:go version 或者 go help
    正常情况下会显示:
     
     
    (3).访问Go安装包中的文档
    打开Windows中的命令提示符(cmd.exe)执行命令: godoc -http=:6060
     
    (4)编译并运行:
    package main
    
    import "fmt"
    
    func main(){
    
    fmt.Printf("Hello Word!
    ");
    
    }
    D:Gosrc>go build hello.go
    can't load package: package main:
    hello.go:1:1: expected 'package', found 'EOF'
    
     //报错原因是文件编辑后,未保存就直接进行编译
    
    D:Gosrc>go build hello.go
    
    D:Gosrc>go run hello.go
    Hello Word!
    
    D:Gosrc>
     

    1.GO语言命令:

    godoc -http :8080   //在本地获取官网文档

    go get                    //获取远程资源包

    go run                   //直接运行程序

    go build                //测试编译,检测是否有编译错误

    go install              //编译包文件并编译整个程序

    2.GO环境变量及工作目录

    *bin:存放编译后生成的可执行文件

    *pkg:存放编译后生成的包文件

    *src:存放项目源码

    3.GO环境变量:

    set GOARCH=amd64           //CPU架构
    set GOBIN=                           //工作目录下的bin文件夹
    set GOCACHE=C:UsersxcxzAppDataLocalgo-build
    set GOEXE=.exe                  //生成可执行文件的后缀
    set GOFLAGS=
    set GOHOSTARCH=amd64      //交叉编译的架构
    set GOHOSTOS=windows        //交叉编译的系统
    set GOOS=windows
    set GOPATH=C:Usersxcxzgo      //工作目录
    set GOPROXY=
    set GORACE=
    set GOROOT=D:Go                       //安装目录
    set GOTMPDIR=

    4.第一个GO程序:Hello  world

    (1)在D:Gosrc目录下新建,文件hello.go

    package main
    
    import "fmt"
    
    func main(){
        fmt.Println("Hello world 你好,世界!")
    }

    (2)CMD下运行:D:Gosrc>go run hello.go

    5.GO程序的一般结构:

    (1)GO程序是通过package来组织的

    (2)只有package名称为main的包可以包含main函数

    (3)一个可执行程序有且仅有一个main包

    (4)通过import关键字来导入其它非main包

    (5)通过const关键字来进行常量的定义

    (6)通过在函数体外部使用var关键字来进行全局变量的声明与赋值

    (6)通过type关键字来进行结构(struct)或接口(interface)的声明

    (7)通过func关键字来进行函数的声明

    //当前程序的包
    package main
    
    //导入其他的包
    import "fmt"
    
    //常量的定义
    const PI=3.14
    //全局变量
    var name="chunyu"
    
    //一般类型声明inttype是类型的名称
    type inttype int
    
    //结构的声明,chunyu是结构的名称
    type chunyu struct{}
    
    //接口的声明
    type golang interface{}
    
    //main函数作为程序的入口或启动
    func main(){
        fmt.Println("Hello world 你好,世界!")
    }

    6.导入包之后没有调用包中的函数,那么就会出现编译错误;

    7.包别名:

    import   std  "fmt"

    std.Println("Hello word!")

    8.省略调用:

    import  .   "fmt"

    Println("Hello word!")

    9.可见性规则:使用大小写来决定常量,变量,类型,接口,结构和函数,是否可以被外部包所调用

    (1)函数名首字母小写,即为private

    (2)函数名首字母大写,即为public

    10.多个常量,全局变量或一般类型(非接口,非结构)可以进行简写:使用的是括号

    //常量的定义
    const(
        PI = 3.14
        SI = 1.15
        CI = "test"
    )
    
    //全局变量。变量组只能用在全局变量的声明中使用,函数体内是不可以这样使用的
    
    var(
        name = "chunyu"
        sex  = "man"
        age  = 15
    )
    
    //一般类型声明
    type(
        typetest1 int
        tptest2   float32
        tptest3   string
    )

    11.GO基本类型:

    (1)布尔型:bool

    -长度:1字节

    -取值范围:true,false

    -注意事项:不可以用数字代表true或false

    (2)整型:int/uint

    (3)8位整型;int8/uint8      uint8---无符号的8位整型

    -长度:1字节

    -取值范围:-128~127/0~255(2的8次方)--(无符号的8位整型的取值范围)    

    (4)字节型:byte(uint8别名)

    (5)16位整型:int16/uint16

    -长度:2字节

    -取值范围:-32768~32767/0-65535(2的16次方)

    (6)32位整型(别名rune,处理Unicode字符)(4字节),64位整型(8字节)类似上述;

    (7)浮点型:float32/float64

    -长度:4/8字节

    -小数位:精确到7/15小数位

    (8)复数:complex64/complex128    长度:8/16字节

    (9)足够保存指针的32位或34位整数型:uintptr

    (10)其他值类型:array,struct,string

    (11)引用类型:slice---切片,map---类似hash表,chan--通道,高并发

    (12)接口类型:interface

    (13)函数类型:func。可以赋值给变量

    12.类型的零值:零值不等于空值,而是当变量被声明为某种类型后的默认值,

         通常情况下,值类型的默认值为0,bool为false,string为空字符串

         引用类型的零值,就是new,代表没有分配内存地址

    13.类型别名:例如:string类型可以起一个中文的别名为:文本,然后b变量可以声明为“文本”类型

    type(
        byte int8
        rune int32
        文本 string
    )
    //main函数作为程序的入口或启动
    func main(){
        var b 文本
        b = "中文类型名"
        fmt.Println(b)
    }

    14.单个变量的声明与赋值:

    --变量的声明格式:var  <变量名称> <变量类型>

    :当这个变量还没有要用到,但是在后边的分支结构中可能会用到它,那么你就不能在这个结构体中声明,因为如果你在结构中声明,当这个结构退出之后你还要进行一些其他的运算,这个时候你就需要提前的对这个变量进行声明,然后你才能在后边的这个过程中进行使用;可以在一些分支结构中进行赋值

    --变量的赋值格式:<变量名称>  =  <表达式>

    :一般是用在全局变量中

    --声明的同时赋值:var  <变量名称>   [变量类型] =   <表达式>

    func main(){
    
        var a int    //变量的声明
        a = 234      //变量的赋值
        //变量声明的同时赋值
        var b int = 789
        //上述的格式可以省略变量类型,由系统判断
        var c = 367
        //变量声明与赋值的最简写法
        d := 365
        
        fmt.Println(a,b,c,d)
    }

    15.多个变量的声明与赋值:

    --全局变量的声明可使用var()的方式进行简写;

    --全局变量的声明不可以省略var,但可使用并行方式

    --所有变量都可以使用类型推断

    --局部变量不可以使用var()方式简写,只能使用并行方式

    func main(){
        var a,b,c,d int = 1,2,3,4    
        fmt.Println(a)
        fmt.Println(b)
        fmt.Println(c)
        fmt.Println(d)
    }

    空白符:_   表示空白符,暂时忽略的变量

    func main(){
        var a,_,c,d int = 1,2,3,4    //往往用在函数多个返回值得情况下
        fmt.Println(a)
        fmt.Println(c)
        fmt.Println(d)
    }

    16.变量的类型转换:

    --Go中不存在隐式转换,所有类型转换必须显式声明

    --转换只能发生在两种相互兼容的类型之间

    --类型转换的格式:

            <ValueA>  [:] = <TypeOfValueA>(<ValueB>)

    func main(){
        var a float32 = 100.1
        b := int(a)  //把未定义的变量b转换并赋值为int类型的a
        fmt.Println(a,b);
    }
    func main(){
        var a int = 65
        b := string(a)  //把未定义的变量b转换并赋值为int类型的a
        fmt.Println(a,b);
    }
    上述代码,输出:65,A

         ***string()表示数据转换成文本格式,因为计算机中存储的任何东西本质上都是数字,因此函数自然的认为我们需要的是用数字65表示的文本A

  • 相关阅读:
    有一种尺度叫圆融
    十大经典排序算法
    Maximal Square
    Word Break
    Flatten List
    Triangle
    Paint Fence
    Longest Increasing Continuous Subsequence
    Minimum Size Subarray Sum
    Letter Combinations of a Phone Number
  • 原文地址:https://www.cnblogs.com/hqutcy/p/9893291.html
Copyright © 2020-2023  润新知