Go基础语法 | 青训营笔记

45 阅读4分钟

特点

拥有跟 C++ 的快速高性能编译

也拥有跟Python一样的大量库函数

还拥有跟Java的跨平台和垃圾回收机制

可以说是集合了很多语言的强大特点 外加自己的一些额外特点

入门

配置环境

开发环境去官网下载go语言 配置好环境变量即可

查看自己是否配置好环境变量 在cmd控制台输入go看看是否有以下输出

image.png

HelloWorld

学习一门语言肯定少不了hello world

在java中 我们需要创建一个类 然后添加main方法

class Main{
    public static void main(String[] args){
        System.out.Pringln("Hello World");
    }
}

go创建 需要import一个fmt包 再package main 直接调用fmt的Println方法即可输出

package main

import "fmt"

func main(){
    fmt.Println("Hello World")
}

语法

变量

在声明变量的时候需要使用var关键字

go语言不像java需要手动写数据类型 他能自动推导数据类型 赋给变量


var a = 1 //这里的a就为整型变量
var b = "1" //这里的b就为字符串变量

上面还有一种写法 用:=符号来代替var关键字


a := 1 //这里的a就为整型变量
b := "1" //这里的b就为字符串变量

上面得到的是一样的效果

常量

在声明常量的时候需要使用const关键字


const A = 1 //这里的a就为整型常量
const B = "1" //这里的b就为字符串常量

常量在声明定义赋值后 不能被改变


const A = 1 //这里的a就为整型常量
A = 3//这串代码会报错

逻辑处理

if else

用来进行真假判断


if 条件 {
//条件为真的时候执行
}else{
//条件为假的时候执行
}

上面的 条件 跟Java一样需要布尔值 不像c语言能0 1为真 假

for

go语言在循环中只存在 一个语法 就是for

java中存在 while for do...while等等

//死循环 只写一个for 什么都不写就是死循环
for{
    
}
//普通循环 定义一个变量 i 循环n次
for var i = 0;i <= n;i++{
    
}
//while循环 使用外部变量 循环n-i次
for i <= n{
    
}

//在循环中 使用break 能跳出循环 
//使用continue 进入下一次循环


switch

java语言中 switch case后面必须加break 否则会全部执行

但是 go不需要

a:=2
switch a: {
    case 1:
      //a==1时的代码
    case 2:
     //a==2时的代码
    case 3:
     //a==3时的代码
    default:
     //其他情况时的代码
    }

基本数据结构

数组

固定长度的一个容器 创建后 不能更改

var a [10]int
var b [10]string

在没赋值的时候 必须使用var关键字

切片

可变长度的一个容器 创建后可以改变

使用make方法来创建切片


a :=make([]int,10)
//n := make([]数据类型,长度)

//增加数据
a=append(a,1)//给a切片增加一条值1
a=append(a,2,3)//给a切片增加两条值2,3

//访问数据

fmt.Println(a[0])//使用角标获取角标对应值
fmt.Println(a[:3])//0-2位置的值 [)左闭右开
fmt.Println(a[1:3])//1-2位置值 [)左闭右开
fmt.Println(a[1:])//1-最后位置值[]左闭右闭


Map

使用键值对 来保存数据 对比数组 就是将角标改成指定的

比如说 a[0] 这是数组取值

如果有一个Map b 它的key为string 就可以使用 b[key]来访问对应值

使用make方法创建map


 b := make(map[string]int)

 //增加数据
 b["one"] = 1
 b["two"] = 2
 //删除数据
 b.delete("one")
 

go特有

range

range 一般使用在map,切片里 获取 map,切片角标和对应的值


//range arr



//range map

//在for里面使用
arr :=[]int{1,3,9}

for i,result := range arr{
    fmt.Println(i +" "+result)
}

var map = make(map[string]string)  
map["one"] = "one"  
map["two"] = "two"   

for i,result := range map {  
fmt.Println(i + " " +result)  
}

函数

基本格式

func methodName( x    type)     type 
     函数名称   形参 形参类型   返回值类型
 

跟其它语言区别很大 数据类型都在后面

指针

就是指向内存地址的变量

a := 1  
fmt.Print(&a)//取出a的地址


在方法中声明

func main() {
n := 2  
add(&n)  
fmt.Println(n)  
  
}  
  
func add(n *int) {  //形参是接受一个地址变量
*n += 2  
}
   

结构体

定义多个变量的一个数据类型 后面再拓展