Go教程

简单的go

本文主要是介绍简单的go,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

1、安装go

      https://golang.google.cn/dl/

     1、安装  我安装在了D:\Go

           添加 D:\GoWork 目录,并在目录下增加src,此目录为写代码目录

     2、配置环境变量

          

          path中添加以下内容

          

     3、重启电脑,打开 cmd  输入: go version可以查看安装的版本

     4、安装vscode ,并添加Chinese和Go两个插件 

     5、添加代码提示

         cmd中执行以下语句:

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

         执行完后,vscode中右下角点击install all

     5、编写helloworld

           在D:\GoWork\src目录下添加main.go文件,并写入以下代码

package main

import "fmt"

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

}

         编译代码(会生成main.exe文件):go build main.go

         执行编译后的exe文件:./main.exe

2、代码

     1、变量声明

         1、package:

                      1、main包为应用程序的入口包

                      2、包名可以与其目录不同名

                      3、一个目录下的同级文件归属一个包。

         2、关键字

                 为go语言中具有含义的字,不可作为变量名使用

                       

        3、变量与常量

                 声明方式为:var 变量名 变量类型

                 需要注意的是,函数内变量一旦声明,必须使用

                1、变量声明

var name string  //默认为""
var age int   //默认为0
var isOk bool  //默认为false

//变量赋值
name = "小明"
age = 1
isOk = true

              2、多变量声明

                 当多变量声明时,第一个有值,以下的没有值,自动使用第一个的值

var (
	name string
	age int
	isOk bool
)

//以下所有的值都为1,都使用了name的值
const (
	name int = 1
	age
	isOk
)

              3、简短变量赋值 自动判断类型
               name := "aaa" 

              4、匿名变量 _ ,如果不需要该值则直接使用下划线代替,占位使用

              5、、常量

                程序运行中数据不再改变,定义之后,不能再次赋值了

                const status = 1

              6、  iota常量计数器(只能在常量中使用)

                  当iota关键字出现时,该值会被重置为0,每新增一行常量将会被计数一次

                  下方代码中三个值从上到下分别为0,1,2

const (
	name int = iota
	age
	isOk
)

     2、基本数据类型

        1、整形

                1、 整形分为两类,有符号类型(int)和无符号类型(uint),可以理解为uint8就是byte类型,uint16就是short类型,uint64就是long类型

               

               2、特殊类型

                   主要区别于放在32或者64位系统会占用的数量

              

       2、浮点数

               只支持flout32和flout64,默认flout定义都是flout64

               amount float64 = 1.3

               flout32和flout64这两个类型都不能转换

      3、布尔值

               bool,和java中的boolean一致,判断true和false

      4、fmt使用

	var age = 17;
	fmt.Printf("%T\n", age)  //查看类型
	fmt.Printf("%v\n", age)  //查看值
	fmt.Printf("%#v\n", age) //查看值,并加上类型标识
	fmt.Printf("%b\n", age)  //查看二进制
	fmt.Printf("%d\n", age)  //查看十进制
	fmt.Printf("%o\n", age)  //查看八进制
	fmt.Printf("%x\n", age)  //查看十六进制
	var name = "123";
	fmt.Printf("%s\n", name) //查看字符串

       5、string字符串

              string也是原生类型,内部实现使用的是utf-8,string只能用双引号包裹,单引号包裹的是字符

              str := "123"   普通字符串

              str := `啊啊啊`  可换行的字符串

              1、常用操作

              

                 split举例:

    str := "123"
	arr := strings.Split(str,"2")
	fmt.Println(arr)

              2、字符串分为两种类型

                1、byte类型,表示ASCII中的字符

                2、rune类型,表示一个UTF-8的字符

             3、字符串修改

                  字符串类型本身不能修改,需要先将字符串转换为rune类型,修改完字符后,再将转换为string类型才可以

	str := "白萝卜"
	str1 := []rune(str)
	str1[0] = '红' //需要是单引号 因为rune是字符
	fmt.Println(string(str1))

      3、流程控制

         1、if

	age := 19
	if(age <= 10){
		fmt.Println("小于10")
	}else if(age >10 && age <=19){
		fmt.Println("大于10并小于19")
	}else{
		fmt.Println("大于等于19")
	}

          2、for

              1、for循环

	for i := 0; i < 19; i++ {
		fmt.Println(i)
	}

              2、无限循环

    for {
		fmt.Println('i')
	}

              3、range循环 ,i是角标,v是rune类型的值

	str := "哈哈哈"
	for i,v := range str {
		fmt.Println(i,v,string(v))
	}

      4、复杂数据类型

            1、数组

                    1、声明数组长度   :arr := [3]string{"你好","你好2","你好3"}

                    2、不声明数组长度:arr := [...]string{"你好","你好2","你好3"}

                    3、多维数组:

	//一个数组包含3个子数组,子数组两个值
	arr := [3][2]string{
		[2]string{"第一个数组","第一个数组"},
		[2]string{"第二个数组","第二个数组"},
		[2]string{"第三个数组","第三个数组"},
	}

	//
	for i, v := range arr {
		for i1 := 0; i1 < len(v); i1++ {
			v1 := v[i1]
			fmt.Println(i1,v1)
		}
		fmt.Println(i,v)
	}

           2、切片(slice)

                    切片是拥有相同元素类型的可变长度的序列,是基于数组的封装,支持自动扩容

                    切片是一个引用类型,内部包含地址,长度,容量。一般用于操作集合

                   1、定义: var arr = []int{1,2,3}

                   2、判断是否为空:arr == nil

                   3、查看长度和容量:len(arr),cap(arr)

                   4、对slice进行切割:

                             1角标后的数据:arr1 = arr[1:]

                             2角标前的数据:arr1 = arr[:2]

这篇关于简单的go的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!