GO编程基础

栏目: Go · 发布时间: 6年前

什么是Go?
Go是一门并发支持、垃圾回收的编译型系统编程语言,旨在创造一门具有在静态编译语言的高性能和动态语言的高效开发之间拥有良好平衡点的一门编程语言。

Go的主要特点:

类型安全和内存安全
以非常直观和极低代价的方案实现高并发
高效的垃圾回收机制
快速编译(同时解决 C语言 中头文件太多的问题)
为多核计算机×××能提升中的方案
UTF-8编码支持

-----

Go存在的价值是什么?

[GO 在谷歌:以软件工程为目的的语言设计请添加链接描述](https://www.oschina.net/translate/go-at-google-language-design-in-the-service-of-software-engineering)

-----

Go命令

在命令行或终端输入 go  即可查看所有支持的命令

Go常用命令简介

go env  获取Go环境变量

PS C:\Users\scott> go env
set GOARCH=amd64              #系统类型
set GOBIN=C:\Users\scott\go\bin                                                   # 编译后生成的bin目录
set GOCACHE=C:\Users\scott\AppData\Local\go-build
set GOEXE=.exe
set GOFLAGS=
set GOHOSTARCH=amd64
set GOHOSTOS=windows
set GOOS=windows
set GOPATH=C:\Users\scott\go                                                 #Go 开发目录
set GOPROXY=
set GORACE=
set GOROOT=D:\Applications\Go                                              #Go安装目录
set GOTMPDIR=
set GOTOOLDIR=D:\Applications\Go\pkg\tool\windows_amd64
set GCCGO=gccgo
set CC=gcc
set CXX=g++
set CGO_ENABLED=1
set GOMOD=
set CGO_CFLAGS=-g -O2
set CGO_CPPFLAGS=
set CGO_CXXFLAGS=-g -O2
set CGO_FFLAGS=-g -O2
set CGO_LDFLAGS=-g -O2
set PKG_CONFIG=pkg-config
set GOGCCFLAGS=-m64 -mthreads -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=C:
\Users\scott\AppData\Local\Temp\go-build389094662=/tmp/go-build -gno-record-gcc-switches

go get :获取远程包(需要提前安装githg
go run: 直接运行程序
go build:测试编译, 检查是否有编译错误
go fmt:  格式化源码
go install :编译包文件并编译整个程序
go test:运行测试文件
go doc 查看文档

-----
第一个程序:
package main

import "fmt"

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

GO编程基础

-----

Go导入package格式

import "fmt"
import "os"
import "time"
import "io"



import 
    "fmt"
    "os"
    "time"
    "io"


同理

//常量定义
const(
    PI = 3.14
    const1 = "STRING"
    const2 = 2
    const3 = 3
)
//全局变量
var(
    name = "gopher"
    name1 = "1"
    name2 = 2
    name3 = 3
)

//一般类型声明
type(
    newType int
    type1   float32
    type2   string
    type3   byte
)

导入包的别名

import   bieming "fmt"

import   . "fmt"       (前面有一点,代指省略,有这功能,但不建议省用法)

只能导入使用到的包,未使用到的需要用双斜线   // 内容   或  //*-----内容-------*//注释

可见性规则

Go语言中,使用大小写来决定该常量、变量、类型、接口、结构、或函数是否可以被外部包所调用:

根据约定,
函数名首字母小写,即为private  私有   外部无法调用
函数名首字母大写,即为public   公有   外部可以调用

Go基本类型

- 布尔型:bool
    - 长度:1字节
    - 取值范围: true,false
    - 注意事项:不可以用数字代表truefalse

- 整型:int/uint
    -根据运行平台可能为3264

- 8位整型: int8/uint8
    -长度:1字节
    -取值范围:-128~127/0~255

- 字节型:byte(uint8别名)

- 16位整型:int16/uint16
    - 长度:2字节
    - 取值范围:-32768~32767/0~65535
- 32位整型:int32(rune)/uint32
    - 长度:4字节
    - 取值范围:(-2147483648  2147483647)

- 64位整型:int64/uint64
    - 长度:8字节
    - 取值范围:(-9223372036854775808  9223372036854775807)

- 浮点型:float32/float64
    - 长度:4/8字节
    - 小数位:精确到7/15位小数位

类型名称    有无符号    bit
int8    Yes      8
uint8   No       8
uint16  No       16
int16   Yes      16
int32   Yes      32
int64   Yes      64
uint32  No       32
uint64  No       64
int     Yes     等于cpu位数
uint    No      等于cpu位数
rune    Yes      int32 等价
byte    No       uint8 等价
uintptr No      -

- 复数类型:complex64/complex128
    - 长度:8/16字节

- 足够保存指针的32位或64位整型:uintptr

- 其他类型:
    - arraystruct string
- 引用类型:
    - slicemapchan

- 接口类型:interface
- 函数类型:func

类型零值:

    零值不等于空值,而是当变量被声明为某种类型后的默认值,通常情况下值类型默认值为0boolfalse,string为空字符串

变量声明与赋值:

全局变量使用var声明

局部变量(函数体)可以使用下面方式:

   var a int = 1
     var a,b,c,d = 1, 2, 3, 4
     a,b,c,d := 1, 2, 3, 4

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

算法(英文版•第4版)

算法(英文版•第4版)

[美] Robert Sedgewick、[美] Kevin Wayne / 人民邮电出版社 / 2016-3 / 129.00元

本书作为算法领域经典的参考书,全面介绍了关于算法和数据结构的必备知识,并特别针对排序、搜索、图处理和字符串处理进行了论述。第4 版具体给出了每位程序员应知应会的50 个算法,提供了实际代码,而且这些Java 代码实现采用了模块化的编程风格,读者可以方便地加以改造。本书配套网站提供了本书内容的摘要及更多的代码实现、测试数据、练习、教学课件等资源。一起来看看 《算法(英文版•第4版)》 这本书的介绍吧!

MD5 加密
MD5 加密

MD5 加密工具

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具