PHP 开发者学 Golang 之基本结构

栏目: PHP · 发布时间: 5年前

内容简介:PHP 是一门弱类型的语言,所以 PHP 开发者的我们刚刚接触强类型的语言是有点蛋疼的。 在写普通程序的时候,弱类型挺方便的。但是在设计金钱相关的程序,强类型语言往往更安全。今天我们就来学习一下 Golang 的基本结构、基本数据类型。 每一门语言都有其关键字和预定义标识符。Golang 语言也不例外。Go 语言有25 个关键字或保留字,有 36 个预定义标识符。要记熟这些关键字和标识符。

PHP 是一门弱类型的语言,所以 PHP 开发者的我们刚刚接触强类型的语言是有点蛋疼的。 在写普通程序的时候,弱类型挺方便的。但是在设计金钱相关的程序,强类型语言往往更安全。

今天我们就来学习一下 Golang 的基本结构、基本数据类型。 每一门语言都有其关键字和预定义标识符。Golang 语言也不例外。

Go 语言有25 个关键字或保留字,有 36 个预定义标识符。要记熟这些关键字和标识符。

关键字或保留字

break default func interface select
case defer go map struct
chan else goto package switch
const fallthrough if range type
continue for import return var

预定义标识符

append bool byte cap close complex complex64 complex128 uint16
copy false float32 float64 imag int int8 int16 uint32
int32 int64 iota len make new nil panic uint64
print println real recover string true uint uint8 uintptr

常量、变量

常量

Go 语言中的的常量定是使用 const 关键字 常量要求在编译时可以确定的值。所以常量定义不允许声明一个变量的值。

const Pi = 3.14159 //正确
const abc = getAbc() //错误

多个变量可以使用括号一下定义多个

const (
    a = 100
    b = 200
    c = 300
)

变量

变量定义使用 var 关键字

var a = 1000;

定义变量的时候需要指定变量的类型。 如果不指定则要求给变量赋予一个默认值,指定默认值后,又 Go 语言自动推导类型

var abc = 200
var str String

同时定义多个变量,同样是使用括号的形式

var (
	str string
	num int
	m map[string]string
)

简短形式

简短形式的变量定时是使用 := 的形式来定义。

b := 2000

相同类型的多个变量可以声明在同一行,如:

var a, b, c int

也可以在同一行赋值

a, b, c = 1, 2, "test"

init 函数

变量的初始化除了可以在全局声明中初始化,也可以在 init 函数中初始化。 init 是一种很特殊的函数,在每个包完成初始化后自动执行,无法手动调用,并且执行优先级比 main 函数高。

package main

import "fmt"

var Pi float64

func init() {
   Pi = 3.14159
   fmt.Println(Pi)
}

数据类型

布尔类型 bool

var a = 10 > 9 // true
!a // false

数字类型,数字类型还区分整数类型,浮点数类型,无符号整数类型。

整数:

  • int8(-128 -> 127)
  • int16(-32768 -> 32767)
  • int32(-2,147,483,648 -> 2,147,483,647)
  • int64(-9,223,372,036,854,775,808 -> 9,223,372,036,854,775,807)

浮点型(IEEE-754 标准):

  • float32(+- 1e-45 -> +- 3.4 * 1e38)
  • float64(+- 5 * 1e-324 -> 107 * 1e308)

无符号整数:

  • uint8(0 -> 255)
  • uint16(0 -> 65,535)
  • uint32(0 -> 4,294,967,295)
  • uint64(0 -> 18,446,744,073,709,551,615)

整数类型不支持隐式转换,只能手动进行显式转换

var a int16 = 34
var b int32
b = a + a //这个是错误的形式,会报错:./test.go:7:4: cannot use a + a (type int16) as type int32 in assignment

显式转换后再去计算就支持了

var a int16 = 34
var b int32
b = int32(a) + int32(a)
print(b) //68

复数类型,复数类型有 complex64 (32 位实数和虚数), complex128 (64 位实数和虚数)

var b complex64 = complex(5,6)
fmt.Println(b)

运行结果: (5+6i)

位运算,位运算有 按位与 & ,按位或 | ,按位异或 ^

运算符与优先级

运算符优先级从高到底。

优先级 	运算符
 7 		^ !
 6 		* / % << >> & &^
 5 		+ - | ^
 4 		== != < <= >= >
 3 		<-
 2 		&&
 1 		||

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

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

Effective Objective-C 2.0

Effective Objective-C 2.0

Matt Galloway / 爱飞翔 / 机械工业出版社 / 2014-1 / 69.00元

《effective objective-c 2.0:编写高质量ios与os x代码的52个有效方法》是世界级c++开发大师scott meyers亲自担当顾问编辑的“effective software development series”系列丛书中的新作,amazon全五星评价。从语法、接口与api设计、内存管理、框架等7大方面总结和探讨了objective-c编程中52个鲜为人知和容易被忽......一起来看看 《Effective Objective-C 2.0》 这本书的介绍吧!

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试