文章目录
  1. 1. 什么是Go语言
  2. 2. 搭建Go语言开发环境(Sublime Text2+GoSublime+Gocode(自动代码提示))
    1. 2.1. 安装Go
    2. 2.2. 安装Sublime Text 2配置GoSublime/GoGDB
    3. 2.3. 安装gocode,提供代码补全功能
  3. 3. Go语言基础
    1. 3.1. Hello Go——-初识Go语言
    2. 3.2. Go的基本数据类型与声明
    3. 3.3. 循环
    4. 3.4. 数组Array
    5. 3.5. 切片Slice 并不是数组,指向低层数组

因为项目的需要,近几天学习了一下Go语言,作为一个已经学习过Java的初学者来说,刚开始是不太习惯Go语言的语法习惯,但是接触几天下来也就习惯了。下面是这几天学习的一些基础知识吧。

什么是Go语言

Go 是一个开源的编程语言,它能让构造简单、可靠且高效的软件变得容易。Go 语言被设计成一门应用于搭载 Web 服务器,存储集群或类似用途的巨型中央服务器的系统编程语言。

对于高性能分布式系统领域而言,Go 语言无疑比大多数其它语言有着更高的开发效率。它提供了海量并行的支持,这对于游戏服务端的开发而言是再好不过了。

罗伯特·格瑞史莫(Robert Griesemer),罗勃·派克(Rob Pike)及肯·汤普逊于2007年9月开始设计Go语言,Go语言是基于Inferno操作系统所开发的。Go语言于2009年11月正式宣布推出,并在Linux及Mac OS X平台上进行了实现.

搭建Go语言开发环境(Sublime Text2+GoSublime+Gocode(自动代码提示))

安装Go

下载你需要的 golang版本

配置golang环境变量

系统变量名:
GOROOT值:Go的安装位置

系统变量名:Path追加值:;%GOROOT%\bin

注意:千万不要在安装路径中出现中文。否则之后将无法正常使用Go语言开发工具

配置GOPATH:Go工程所在的文件夹

值得注意:GOPATH是golang项目的特殊路径,其路径下必须包含bin、pkg、src这3个目录。golang项目的是依靠src目录来组织源代码的。  

安装完毕后当然要验证一下Go是否已经正确安装了:打开Windows中的命令提示符(cmd.exe)执行命令:go version

安装Sublime Text 2配置GoSublime/GoGDB

下载ST2安装后打开它如图所示:

点击View – Show Console或按Ctrl+`(这个键就是Tab键的上一个)弹出控制台 输入如下文本按回车然后重启ST2:

import urllib2,os; pf='Package Control.sublime-package'; ipp=sublime.installed_packages_path(); os.makedirs(ipp) if not os.path.exists(ipp) else None; urllib2.install_opener(urllib2.build_opener(urllib2.ProxyHandler())); open(os.path.join(ipp,pf),'wb').write(urllib2.urlopen('http://sublime.wbond.net/'+pf.replace(' ','%20')).read()); print 'Please restart Sublime Text to finish installation'

  
重启之后,preferences菜单下会出现一个Pakage control,按下Ctrl+Shift+P后会弹出的一个可以输入命令的文本框
 

然后输入install,稍等片刻就会再出现一个文本框,此时输入gosublime按回车就可以安装插件了。同理把GoGDB安装好。

安装gocode,提供代码补全功能

打开cmd,输入go get github.com/nsf/gocode按回车后等待片刻后,打开%GOPATH%\bin这个路径应该能看到gocode.exe这个文件,如果没看到则执行go install github.com/nsf/gocode试试。

然后将gocode.exe剪切到%GOROOT%\bin下面,此前我们已将%GOROOT%\bin添加到Path环境变量当中,这样个拷贝动作可以确保gocode.exe在Path环境变量下。 这里你也可以直接下载Gocode.exe   

准备好gocode后可以配置ST2的GoSublime插件了!点击Preferences > Package Settings > GoSublime > Settings – Default设置env的值为go的安装路径下的bin文件夹

Go语言基础

Go语言采用UTF-8编码,所以不存在乱码问题。

Hello Go——-初识Go语言

package main//当前程序的包
import "fmt"//导入其他包
const PI=3.14 //定义常量
var name="gopher"//全局变量的声明与赋值
type newType int//一般类型声明
type gopher struct{}//结构的声明
type golang interface{}//接口声明
func main(){
  fmt.Println("Hello Go")//由main()函数作为程序入口
}

包的调用还有另外两种形式:(注意两者不可同时使用)

别名调用:

import std "fmt"
std.Println("hello")

省略调用:(不建议使用)

import . "fmt"
Println("hello")

Go语言的可见性规则:使用大小写来决定该变量,常量,类型,接口,结构或者方法函数是否可以被外部包所调用。根据约定,函数名首字母小写即为private,大写即为public。Go语言中没有private和public关键字。
注意包导入却没有使用会报错(这点很不同与Java,所以不要乱导包,建议用到一个导一个)

Go的基本数据类型与声明

  • 布尔型:bool 1个字节 (true,false) 不能用0,1代替
  • 整型:int/uint 根据平台为32位或64位 int8/uint8 1字节 (-128~127/0~255)
  • 字节型:byte(uint8别名) int32别名rune
  • 浮点型:float32/float64 4/8字节 7/15位小数 无double类型
  • 足够保存指针的32位或64位整型 uintptr

类型零值,并不等于空值,是默认值(bool:false,string:” “,arry:[])

声明: var <变量名称> <变量类型> var a int 这个与java中定义存在很多不同。

赋值:<变量名称>=<表达式> a=123

声明同时赋值:①var<变量名称>[变量类型]=<表达式>
②<变量名称>:=<表达式> a:=123 (全局变量不能使用这种模式)

Go中不存在隐式转换,转换只能发生在两种互相兼容的类型之间

string<————->int 转换问题

var a int=65                        var a int=65
b:=string(a)   <-引入包"strConv"->   b:=strConv.Itoa(a)
fmt.Println(b)                      fmt.Println(b)  
输出:A                              输出:65

常量在编译时就已经确定了,表达式中的函数必须是内置函数。

iota是一个常量计数器,从0开始,组中每定义一个常量就自动递增1,每遇到一个const,iota就会被置零。

运用iota和<<结合枚举计算机存储单位

const(
    B float64=1<<(iota*10)
       KB
    GB
    TB
)

循环

Go中只有for一种循环方式,支持3种结构形式,{左括号不能放到下一行,if 的条件表达式不能有括号

a:=1            a:=1              a:=1
for{            for a<=3{        for i:=0;i<3;i++{
  a++             a++              a++
  if a>3{        }                }
  break
  }
}

数组Array

定义:var <varName>[n]<type>

①var a[2] int

②a:=[2]int{1,1}

③a:=[20]int{19:1} 前19个为0,第二十个为1

④a:=[…]int{1,2,3,4}

区分指向数组的指针和指针数组

区分指向数组的指针:var p*[100]int=&a

指针数组:a:=[…]*int{&x,&y}

数组在Go中是值类型,用new创建数组返回一个指向数组的指针p:=new([10]int),p为指针,p[1]=2

切片Slice 并不是数组,指向低层数组

var s1 []int 或 s1:=make([]int,3,10),3代表容量,10代表内存容量最大为10,若不够则会变成两倍(20)

len(s1)—-内容个数

cap(s1)—-最大容量,这是一种高效率的模式

Reslice:索引以被slice切片为准,不可超过slice切片的容量,索引不可越界

append:在slice切片尾部追加元素,可以将slice追加在另一个slice后

copy(s2[2:4],s1[1,3]):将s1[1],s1[2]复制到s2[2],s2[3]

var s1 []int={1,2,3,4}这种写法是错误的

(未完待续)

文章目录
  1. 1. 什么是Go语言
  2. 2. 搭建Go语言开发环境(Sublime Text2+GoSublime+Gocode(自动代码提示))
    1. 2.1. 安装Go
    2. 2.2. 安装Sublime Text 2配置GoSublime/GoGDB
    3. 2.3. 安装gocode,提供代码补全功能
  3. 3. Go语言基础
    1. 3.1. Hello Go——-初识Go语言
    2. 3.2. Go的基本数据类型与声明
    3. 3.3. 循环
    4. 3.4. 数组Array
    5. 3.5. 切片Slice 并不是数组,指向低层数组