以下是小编精心整理的GO语言基本数据类型总结,本文共13篇,希望对大家有所帮助。

篇1:GO语言基本数据类型总结
这篇文章主要介绍了GO语言基本数据类型,较为详细的总结了GO语言的基本数据类型,对于GO语言的学习有一定的借鉴参考价值,需要的朋友可以参考下
1、注释(与C++一样)
行注释://块注释:/* ...*/
2、标识符
可以这么说,除了数字开头的不允许,符号开头的不允许,关键字不允许,其他的Unicode字符组合都可以。“_33”也可以是标识符、“我们”也可以是标识符。标识符也区分大小写。
(1)、以大写字母开头的标识符是公开的。(这个很有意思)
(2)、其他任何标识符都是私有的。
(3)、空标识符“_”是一个占位符,用于赋值操作的时候,丢弃、忽略某个值。通常这样用:
go的方法一般会返回2个值,一个通常的返回、一个错误标识。如 fmt.Println(x)会返回2个值,一个是打印的字节数,一个是相应的error值,那么 count,_ = fmt.Println(x) 这行代码就忽略了相应的error值。
3、常量――用const关键字声明
(1)可以自动推断类型,
如:
代码如下:
const a = 5
(2)可以显式指定类型,
如:
代码如下:
const a int16 = 6// int16是一个整形类型
(PS:go语言常量、变量定义的格式均为:
关键字 常量(变量)名 类型 = 值)
(3)可以一次声明多个常量,
如:const ( a = 0 ; b = 2),这叫分组声明。此时,第一个常量被默认设置为0,后续的常量默认设置为前面常量的表达式。
(PS: 但是希望用const (a b)表示a=0,b=0这样的是不行的,常量分组定义,第一个常量必须赋值、或为iota)
(PPS:注意,go语言中一般不需要分号来表示分隔,编译器会自动在每行的末尾添加分号,当然,添加分号也没有错,不过像liteide这样的IDE的自动格式化一般会帮你把分号删除,然后帮你换行)
(4)关键字iota表示连续的无类型的整数常量,iota默认为0,并逐步递增。
即,
代码如下:
const(a = iota; b ; c )
表示b和c此时都为iota,所以a为0,b为1,c为2。(5)一行多个赋值中,iota不相互影响。每次iota出现,它的值为0,如:
代码如下:
const (
i, j, k = 2 * iota, iota, iota + 2
m, n, l
)
此时,i、j的值均为0,k的值为2,m、n、l 的值分别为2 、1 、3
(PS:go语言支持一行赋多个值)
4、变量
变量有2种定义方式:
(1)一种是用关键字var ,
例如:
代码如下:
var i int //这里会自动设置默认值0,如果是字符串,默认为空
或者:
代码如下:
var i = 8 //声明同时赋值,自动推导其类型
或者:
代码如下:
var k int = 16 //指明类型,声明并赋值
或者:
代码如下:
var ( a int; b int; c int) //分组声明,跟常量类似,
(2)另一种是用快速变量声明,就是用 := 操作符,它会声明并初始化一个变量,可以自动推导类型。不过这种声明有一个限制,它只能在函数内部使用,在函数外部会报错。
如:
代码如下:
name := “chandler qian” //自动推导类型为string
值得注意到是,:=操作符是声明并初始化,就是说,在同一个作用域内,这个变量必须未声明过,不然是错误。如下:
代码如下:
k, b := 7, 8
fmt.Printf(“before k=%d,b=%dn”, k, b)
if k := 1; k != -1 {
b := 3
fmt.Printf(“inner k=%d,b=%dn”, k, b)
}
fmt.Printf(“after k=%d,b=%dn”, k, b)
在下面的 if 作用于内,k、b重新用:=声明赋值,但没问题,因为出了 if 作用域,它们就消失了。
结果为:
before k=7,b=8
inner k=1,b=3
after k=7,b=8
而 if语句改为这样:
代码如下:
if k = 1; k != -1 {
b := 3
fmt.Printf(“inner k=%d,b=%dn”, k, b)
}
那么最后的输出就是:
before k=7,b=8
inner k=1,b=3
after k=1,b=8
可见,“=” 是全局作用的赋值,而,“:=” 则会在自己的作用域内创建变量并赋值。
(3)整形字面量的类型会自动推断为int,浮点字面量会自动推断为float64,复数字面量会自动推断为complex128
5、布尔
Go语言会严格筛选使用比较操作符(<、<=、==、!=、>=、>)进行比较的值。这两个值必须是相同类型或实现了相同的接口。如:
代码如下:
func test0 {
var a int = 5
var b float32 = 4.4
if a > b {
fmt.Println(“>”)
}
}
由于a和b类型不匹配,所以编译错误:invalid operation: a > b (mismatched types int and float32),再看下面这个:
代码如下:
func test1() {
var b float32 = 4.4
if b > 7 {
fmt.Println(“>”)
}
}
这个是可以的,虽然类型不匹配,但是b与无类型的整形数值常量7比较。无类型的数值常量可以用于任何比较。
希望本文所述对大家的GO语言程序设计有所帮助。
篇2:微型计算机的基本数据类型
微型计算机的基本数据类型
高级语言中有多种数据类型,如带符号整数、无符号整数、长整数、实型数、长实型数、字符型等,这里所介绍的数据类型是基于数据的位宽,不考虑编程语言中的实际内涵,它们是字节、字、双字和四字。
在微型计算机中一个8位的二进制数据称为一个字节(Byte);一个16位的二进制数据称为一个字(Word),字可以看成由两个字节数据所组成;一个32位的二进制数据称为一个双字(DoubleWord),双字可以看成由两个字或4个字节所组成;一个64位的二进制数据称为一个四字(QuadWord),同样,四字可以看成由两个双字或4个字或8个字节所组成,
在存储器中一个存储单元可以存放一个字节数据,因此,上面四种类型的数据在存储器中存放时分别占用1个、2个、4个和8个存储单元,如果超过一个存储单元,则这些单元必须是相邻的,或者说一个数据必须放在相邻的存储单元中。在x86体系微型计算机(采用:Intelx86系列或兼容的CPU)中,每种数据类型的最低的一个字节总是存放在较低地址处,然后向地址增加方向按顺序依次排列,如图1.13所示。通常将数据最低一个字节所在存储单元的地址说成是该数据的地址。
篇3:笔试题基本数据类型
笔试题(基本数据类型)
JAVA:
基本数据类型和类封装器的知识
基本数据类型的默认值
Overloading和overriding
JNI是什么?有什么特点?
看代码确定是编译期错误还是执行期错误
多线程中Thread和runnable的实现和使用
数据提升和cast
有效的.标识符
String的实例个数
==和equals的区别
同步锁
Notify和sleep的作用,区别
抽象类和interface
Try catch finally throwable throw的区别和用法
结合命令行参数考java数组的定义和使用
Celi,floor,abs,round的用法
篇4:GO 语言学习指南
这篇文章主要介绍了GO 语言学习指南,介绍的相当全面,有需要的小伙伴参考下吧,
1.导入包,一个主函数中只有一个main函数,包含一个main包,主函数中我们要申明main的包!
代码如下:
package main
func main{
}
2.引入包文件,譬如我们使用的是fmt包,打印helloword用,golang有一个包可见性的定义,就譬如其他语言中的private 、protected这些声明。当手写字母是小写的就是包内可用,包外就不可以用了,手写字母大写,引用包的就可以使用!举个例子:fmt.Println();我们会发现我们使用的和引用的函数都是大写的!小写的会调用错误的!
代码如下:
package main
import “fmt”
func main(){
fmt.Println(“你好,脚本之家”);
}
3.包的混淆机制,我们可以包的别名,譬如我们感觉包记不住或者说包的名字差不多我们就使用这个别名机制!
代码如下:
package main
import str “fmt”
package main(){
str.Println(“你好,脚本之家”);
}
4.多个包、常量、全局变量、一般类型等简写。当我们有多个常量、包等怎么申明呢
代码如下:
import( const ( var(
“fmt” PI =”3.1415926” name =1
“net” NAME =”widuu” age =12
“io” AGE =”12” wo =”me”
) ) )
5.Go的类型
代码如下:
bool 布尔型 就有true false 没有0和1
int 整型 根据平台自定义如果你是32位的就是32位的整型
int8 8位的整型 在-128~256这个取值范围 其实就在2的8次方的值,有符号就是带负数,uint8就是无符号的
int16 16位整型
rune 32位的有符号的整型
int64 64位整型
float32/64位
complex64 /complex128 负数类型
其他类型
array slice string
引用类型
slice map chan
接口类型 interface
函数类型 func
5.变量的申明与赋值和申明的值
我们申明,没有赋值的时候我们会发现这样的
当申明 int float 输出是0 申明bool 输出的是false
引用包math输出最大的值和最小值,譬如这个输出最大的int16的取值范围fmt.Println(math.MaxInt16)
6.类型申明我们可以自定义类型申明,譬如如下
代码如下:
package main
import std “fmt”
type 文本 string
func main() {
var a 文本
a = “你好”
std.Println(a)
}
7.类型转换
查看源代码打印帮助
代码如下:
var a float32 = 100.01
b:=int(a) //输出a的值就是100.01 输出b的值是100
var c int = 65
d:=string(c) //输出的是A这就直接转换成文本的形式A
b:=strconv.Itoa(c) //这样输出的就是65直接文本输出
篇5:Python基本数据类型详细介绍
最近更 新
python代码检查工具pylint 让你的python更
python操作数据库之sqlite3打开数据库、删
python网络编程学习笔记(六):Web客户端访
python中使用sys模板和logging模块获取行
python利用elaphe制作二维条形码实现代码
Python 学习笔记
9种python web 程序的部署方式小结
Python实现类继承实例
Python中条件选择和循环语句使用方法介绍
Python实现的几个常用排序算法实例
热 点 排 行
Python入门教程 超详细1小时学会
python 中文乱码问题深入分析
比较详细Python正则表达式操作指
Python字符串的encode与decode研
Python open读写文件实现脚本
Python enumerate遍历数组示例应
Python 深入理解yield
Python+Django在windows下的开发
python 文件和路径操作函数小结
python 字符串split的用法分享
篇6:Redis基本数据类型操作之 list
Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API,从3月15日起,Redis的开发工作由VMware主持。
list基本操作
Redis的list类型其实就是一个每个子元素都是string类型的双向链表。链表的最大长度是(2的32次方)。我们可以通过push,pop操作从链表的头部或者尾部添加删除元素。这使得list既可以用作栈,也可以用作队列。
有意思的是list的pop操作还有阻塞版本的,当我们[lr]pop一个list对象时,如果list是空,或者不存在,会立即返回nil。但是阻塞版本的b[lr]pop可以则可以阻塞,当然可以加超时时间,超时后也会返回nil。为什么要阻塞版本的pop呢,主要是为了避免轮询。举个简单的例子如果我们用list来实现一个工作队列。执行任务的thread可以调用阻塞版本的pop去获取任务这样就可以避免轮询去检查是否有任务存在。当任务来时候工作线程可以立即返回,也可以避免轮询带来的延迟。
1、lpush
在key对应list的头部添加字符串元素:
redis 127.0.0.1:6379> lpush mylist “world”(integer) 1redis 127.0.0.1:6379> lpush mylist “hello”(integer) 2redis 127.0.0.1:6379> lrange mylist 0 -11) “hello”2) “world”redis 127.0.0.1:6379>
在此处我们先插入了一个world,然后在world的头部插入了一个hello。其中lrange是用于取mylist的内容。
2、rpush
在key对应list的尾部添加字符串元素:
redis 127.0.0.1:6379> rpush mylist2 “hello”(integer) 1redis 127.0.0.1:6379> rpush mylist2 “world”(integer) 2redis 127.0.0.1:6379> lrange mylist2 0 -11) “hello”2) “world”redis 127.0.0.1:6379>
在此处我们先插入了一个hello,然后在hello的尾部插入了一个world。
3、linsert
在key对应list的特定位置之前或之后添加字符串元素:
redis 127.0.0.1:6379> rpush mylist3 “hello”(integer) 1redis 127.0.0.1:6379> rpush mylist3 “world”(integer) 2redis 127.0.0.1:6379> linsert mylist3 before “world” “there”(integer) 3redis 127.0.0.1:6379> lrange mylist3 0 -11) “hello”2) “there”3) “world”redis 127.0.0.1:6379>
在此处我们先插入了一个hello,然后在hello的尾部插入了一个world,然后又在world的前面插入了there。
4、lset
设置list中指定下标的元素值(下标从0开始):
redis 127.0.0.1:6379> rpush mylist4 “one”(integer) 1redis 127.0.0.1:6379> rpush mylist4 “two”(integer) 2redis 127.0.0.1:6379> rpush mylist4 “three”(integer) 3redis 127.0.0.1:6379> lset mylist4 0 “four”OKredis 127.0.0.1:6379> lset mylist4 -2 “five”OKredis 127.0.0.1:6379> lrange mylist4 0 -11) “four”2) “five”3) “three”redis 127.0.0.1:6379>
在此处我们依次插入了one,two,three,然后将标是0的值设置为four,再将下标是-2的值设置为five。
5、lrem
从key对应list中删除count个和value相同的元素。
count>0时,按从头到尾的顺序删除,具体如下:
redis 127.0.0.1:6379> rpush mylist5 “hello”(integer) 1redis 127.0.0.1:6379> rpush mylist5 “hello”(integer) 2redis 127.0.0.1:6379> rpush mylist5 “foo”(integer) 3redis 127.0.0.1:6379> rpush mylist5 “hello”(integer) 4redis 127.0.0.1:6379> lrem mylist5 2 “hello”(integer) 2redis 127.0.0.1:6379> lrange mylist5 0 -11) “foo”2) “hello”redis 127.0.0.1:6379>
count<0时,按从尾到头的顺序删除,具体如下:
redis 127.0.0.1:6379> rpush mylist6 “hello”(integer) 1redis 127.0.0.1:6379> rpush mylist6 “hello”(integer) 2redis 127.0.0.1:6379> rpush mylist6 “foo”(integer) 3redis 127.0.0.1:6379> rpush mylist6 “hello”(integer) 4redis 127.0.0.1:6379> lrem mylist6 -2 “hello”(integer) 2redis 127.0.0.1:6379> lrange mylist6 0 -11) “hello”2) “foo”redis 127.0.0.1:6379>
count=0时,删除全部,具体如下:
redis 127.0.0.1:6379> rpush mylist7 “hello”(integer) 1redis 127.0.0.1:6379> rpush mylist7 “hello”(integer) 2redis 127.0.0.1:6379> rpush mylist7 “foo”(integer) 3redis 127.0.0.1:6379> rpush mylist7 “hello”(integer) 4redis 127.0.0.1:6379> lrem mylist7 0 “hello”(integer) 3redis 127.0.0.1:6379> lrange mylist7 0 -11) “foo”redis 127.0.0.1:6379>
6、ltrim
保留指定key 的值范围内的数据:
redis 127.0.0.1:6379> rpush mylist8 “one”(integer) 1redis 127.0.0.1:6379> rpush mylist8 “two”(integer) 2redis 127.0.0.1:6379> rpush mylist8 “three”(integer) 3redis 127.0.0.1:6379> rpush mylist8 “four”(integer) 4redis 127.0.0.1:6379> ltrim mylist8 1 -1OKredis 127.0.0.1:6379> lrange mylist8 0 -11) “two”2) “three”3) “four”redis 127.0.0.1:6379>
7、lpop
从list的头部删除元素,并返回删除元素:
edis 127.0.0.1:6379> lrange mylist 0 -11) “hello”2) “world”redis 127.0.0.1:6379> lpop mylist“hello”redis 127.0.0.1:6379> lrange mylist 0 -11) “world”redis 127.0.0.1:6379>
8、rpop
从list的尾部删除元素,并返回删除元素:
redis 127.0.0.1:6379> lrange mylist2 0 -11) “hello”2) “world”redis 127.0.0.1:6379> rpop mylist2“world”redis 127.0.0.1:6379> lrange mylist2 0 -11) “hello”redis 127.0.0.1:6379>
9、rpoplpush
从第一个list的尾部移除元素并添加到第二个list的头部,最后返回被移除的元素值,整个操作是原子的.如果第一个list是空或者不存在返回nil:
redis 127.0.0.1:6379> lrange mylist5 0 -11) “three”2) “foo”3) “hello”redis 127.0.0.1:6379> lrange mylist6 0 -11) “hello”2) “foo”redis 127.0.0.1:6379> rpoplpush mylist5 mylist6“hello”redis 127.0.0.1:6379> lrange mylist5 0 -11) “three”2) “foo”redis 127.0.0.1:6379> lrange mylist6 0 -11) “hello”2) “hello”3) “foo”redis 127.0.0.1:6379>
10、lindex
返回名称为key的list中index位置的元素:
redis 127.0.0.1:6379> lrange mylist5 0 -11) “three”2) “foo”redis 127.0.0.1:6379> lindex mylist5 0“three”redis 127.0.0.1:6379> lindex mylist5 1“foo”redis 127.0.0.1:6379>
11、llen
返回key对应list的长度:
redis 127.0.0.1:6379> llen mylist5(integer) 2redis 127.0.0.1:6379>
篇7:go语言工程结构
这篇文章主要简单介绍了go语言工程结构,对于我们学习go语言很有帮助,需要的朋友可以参考下
Go是一门推崇软件工程理念的编程语言,
Go的代码必须放在工作区中。工作区其实就是一个对应于特定工程的目录,它应该包含三个子目录: src 用于以代码包的形式组织并保存Go源码文件。应该分为三类:库源码文件、命令源码文件、测试源码文件。
pkg 用于存放由go install命令构建安装后的代码包(库源码文件)的“.a“归档文件。与GOROOT目录下的pkg功能类似,区别在于,工作目录中的pkg目录专门用来存放用户代码的归档文件。 bin 在通过go install命令完成安装之后,保存由Go命令源码文件生成的可执行文件,
ps:所谓命令源码文件,就是可以独立运行,可被go build或go install命令转换成可执行文件。库源码文件指某个代码包中的普通源码文件。
设置GOPATH
代码如下:
$vim /etc/profile export GOPATH=$HOME/golang/lib:$HOME/golang/learngo
$source /etc/profile
$HOME/golang/lib用于存放第三方代码库(go get命令获得)
$HOME/golang/learngo 用于存放学习代码
以上就是本文的全部内容了,希望大家能够喜欢。
篇8:python基础教程之基本内置数据类型介绍
-02-02python原始套接字编程示例分享
2014-06-06pycharm 使用心得(八)如何调用另一文件中的函数
2014-04-04Python的ORM框架SQLAlchemy入门教程
2014-02-02使用python装饰器验证配置文件示例
2014-06-06教你如何在Django 1.6中正确使用 Signal
-03-03python 判断自定义对象类型
-09-09Python开发编码规范
-03-03python中wx将图标显示在右下角的脚本代码
2014-04-04python中的__init__ 、__new__、__call__小结
-09-09rhythmbox中文名乱码问题解决方法
篇9:python基础教程之基本内置数据类型介绍
最近更 新
python读取csv文件示例(python操作csv)
pycharm 使用心得(一)安装和首次使用
python实现猜数字游戏(无重复数字)示例分
python将xml xsl文件生成html文件存储示例
python实现rest请求api示例
python3使用tkinter实现ui界面简单实例
Python中os和shutil模块实用方法集锦
python中的实例方法、静态方法、类方法、
python将html转成PDF的实现代码(包含中文
python三元运算符实现方法
热 点 排 行
Python入门教程 超详细1小时学会
python 中文乱码问题深入分析
比较详细Python正则表达式操作指
Python字符串的encode与decode研
Python open读写文件实现脚本
Python enumerate遍历数组示例应
Python 深入理解yield
Python+Django在windows下的开发
python 文件和路径操作函数小结
python 字符串split的用法分享
篇10:go语言base64用法实例
作者:不吃皮蛋 字体:[增加 减小] 类型:
这里展示golang base64 的一个小例子,代码如下:
代码如下:
package main
import (
”fmt“
”encoding/base64“
)
func main {
b64 := base64.NewEncoding(”ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/“)
println(b64.EncodeToString([]byte(”哈哈“)))
}
发现了一个更好的办法:
代码如下:
package main
import (
”fmt“
”encoding/base64“
)
func main() {
s := []byte(”golang.org/pkg/encoding/base64/#variables“)
fmt.Printf(”%sn“, base64.StdEncoding.EncodeToString(s))
}
希望本文所述对大家的Go语言程序设计有所帮助,
篇11:go语言template用法实例
作者:不吃皮蛋 字体:[增加 减小] 类型:转载
golang的template包很好用,做一些复杂的文本格式生成太有帮助了,生成网页也是很不错的,使用起来非常方便
代码如下:
package main
import (
”fmt“
”os“
”text/template“
)
type Latlng struct {
Lat float32
Lng float32
}
func (latlng Latlng) String() string {
return fmt.Sprintf(”%g/%g“, latlng.Lat, latlng.Lng)
}
func main() {
data := []template.FuncMap{}
data = append(data, template.FuncMap{”name“:”dotcoo1“, ”url“:”www.jb51.net/“, ”latlng“:Latlng{24.1, 135.1}})
data = append(data, template.FuncMap{”name“:”dotcoo2“, ”url“:”www.jb51.net/“, ”latlng“:Latlng{24.2, 135.2}})
data = append(data, template.FuncMap{”name“:”dotcoo2“, ”url“:”www.jb51.net/“, ”latlng“:Latlng{24.3, 135.3}})
datatpl := `{{range .}}{{template ”user“ .}}{{end}}`
usertpl := `{{define ”user“}}name:{{.name}}, url:{{.url}}, latlng:{{.latlng}} lat:{{.latlng.Lat}} lng:{{.latlng.Lng}}
{{end}}`
tpl, err := template.New(”data“).Parse(datatpl)
if err != nil {
panic(err)
}
_, err = tpl.Parse(usertpl)
if err != nil {
panic(err)
}
err = tpl.Execute(os.Stdout, data)
if err != nil {
panic(err)
}
println()
}
希望本文所述对大家的Go语言程序设计有所帮助,
篇12:go语言遍历文件夹示例
这篇文章主要介绍了go语言遍历文件夹示例,本文直接给出实现代码,需要的朋友可以参考下
用python遍历文件夹很方便,在go的世界里,我也需要这样的功能,找了找文档,里面有这个功能(具体参考这里:golang.org/pkg/path/filepath/ )……
好,不废话了,我也想早点睡,直接上代码。
代码如下:
代码如下:
/*
File : getFilelist.go
Author : Mike
E-Mail : Mike_Zhang@live.com
*/
package main
import (
”path/filepath“
”os“
”fmt“
”flag“
)
func getFilelist(path string) {
err := filepath.Walk(path, func(path string, f os.FileInfo, err error) error {
if ( f == nil ) {return err}
if f.IsDir {return nil}
println(path)
return nil
})
if err != nil {
fmt.Printf(”filepath.Walk() returned %vn“, err)
}
}
func main(){
flag.Parse()
root := flag.Arg(0)
getFilelist(root)
}
运行效果如下:
篇13:GO语言基础之数组
或许您是从其他语言转到GO语言这边的,那麽在其他语言的影响下您可能会不太适应GO语言的数组,因为GO语言把数组给拆分成了array,slice和map,需要的朋友可以参考下
1.申明一个数组 var a[2] int 或者 a:=[2]int{1,2}
2.数组索引
数组就是索引的来建立如下图
我们再来一个测试
3.go语言可以自动计算数组的长度,譬如你知道数组有几个可以如下申明
代码如下:
a:=[...]int{1,2,3,45}
4.指针数组
代码如下:
a:=[3]int{1,2,3}
var p * [3]int = &a //这种是指针数组 我们看到可以直接输出指向数组的指针
x , y :=1 ,3
a := [...]*int{&x ,&y}
str.Println(a) //输出这样[0xc080000068 0xc080000070]的地址 这就是数组指针
可以用new关键字申明
代码如下:
p := new([10]int)
fmt.Println(p) //&[0 0 0 0 0 0 0 0 0 0] 输出一个指针
多维数组跟其他语言一样
代码如下:
c := [3][2]int{{1: 2}, {2, 1}, {2, 2}}
fmt.Println(c) //输出[[0 2] [2 1] [2 2]]
冒泡算法之go语言版
代码如下:
package main
import ”fmt"
func main() {
a := [...]int{3, 2, 5, 8, 6}
fmt.Println(a)
num := len(a)
for i := 0; i < num; i++ {
for j := i + 1; j < num; j++ {
if a[i] < a[j] {
temp := a[i]
a[i] = a[j]
a[j] = temp
}
}
}
fmt.Println(a)
}
文档为doc格式