1. 程式人生 > >一.識別符號、常量、列舉、變數

一.識別符號、常量、列舉、變數

識別符號

與C,C++,JAVA等語言類似,支援字母、數字與下劃線命名的識別符號。所有識別符號區分大小寫,比如Xyzabc, xYzAbc, xyzABC是三個不同的識別符號。

關鍵字

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

預定義識別符號

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

空識別符號

下劃線’_’表示一個空識別符號,它的作用僅是一個佔位符,通常用在賦值操作中,從而丟棄該值的目的。
注意,空識別符號不是一個變數,所以在:=這樣的賦值中一定要至少指明另一個具名變數。栗子:_, cout := foo(x)

常量、列舉和變數

常量、列舉

常量定義用關鍵字const宣告:

const a = 0
const b = 1
const c = 2

上述書定風格有點類似C,C++,但如果有多個常量定義時,在Go語言下面可以這樣定義:

const (
    a = 0
    b = 1
    c = 2
)

上述這種定義也叫列舉,在Go語言裡有一個預定義識別符號,專門為常量定義所用,特別是列舉定義中,能簡化定義,這個識別符號是iota。

iota是golang語言的常量計數器,只能在常量的表示式中使用。

iotaconst關鍵字出現時將被重置為0(const內部的第一行之前),const中每新增一行常量宣告將使iota計數一次(iota可理解為const語句塊中的行索引)。
  • iota只能在常量的表示式中使用。
fmt.Println(iota)
編譯時會報錯:
src/github.com/user/test/test.go:12: undefined: iota
  • 自增長常量
    將上面的列舉定義做下修改:
const (
    a = iota
    b
    c
)

測試:

package main

import "fmt"

func main() {
        const (
                a = iota
                b
                c
        )
        fmt.Println("iota test: ", a, b, c)
}
[email protected]:~/gopath$ ./bin/test 
iota test:  0 1 2
  • 每次 const 出現時,都會讓 iota 初始化為0
package main

import "fmt"

func main() {
        const d = iota
        fmt.Println(d)
        const (
                a = iota
                b
                c
        )
        fmt.Println("iota test: ", a, b, c)
}
jack@jxes-VirtualBox:~/gopath$ make -f Makefile-boo 
go install github.com/user/test
jack@jxes-VirtualBox:~/gopath$ ./bin/test 
0
iota test:  0 1 2
  • iota與空識別符號’_’
    可以跳過中間的值
package main

import "fmt"

func main() {
        const (
                a = iota
                b
                c
                _
                _
                d
                e
        )
        fmt.Println("iota test: ", a, b, c, d, e)
}
[email protected]:~/gopath$ ./bin/test 
iota test:  0 1 2 5 6 //中間3,4被跳過
  • 位掩碼錶達式中的使用
package main

import "fmt"

func main() {
        const (
                a = 1 << iota
                b
                c
        )
        fmt.Println("iota test: ", a, b, c)
}
[email protected]:~/gopath$ ./bin/test 
iota test:  1 2 4

在 Go 語言的 spec 中, 這就是所謂的隱性重複最後一個非空的表示式列表。

  • 多常量定義在一行的神奇表現
package main

import "fmt"

func main() {
        const (
                a, b = iota + 1, iota + 2 
                c, d
                e, f
        )
        fmt.Println("iota test: ", a, b, c, d, e, f)
}
[email protected]:~/gopath$ make -f Makefile-boo 
go install github.com/user/test
[email protected]:~/gopath$ ./bin/test 
iota test:  1 2 2 3 3 4

iota 在下一行增長,而不是立即取得它的引用,再來看下面這個栗子:

  1 package main
  2 
  3 import "fmt"
  4 
  5 func main() {
  6         const (
  7                 a, b, c = iota + 1, iota + 2, iota + 3
  8                 d, e, f
  9                 g, h, i
 10         )
 11         fmt.Println("iota test: ", a, b, c, d, e, f, g, h, i)
 12 }
[email protected]:~/gopath$ ./bin/test 
iota test:  1 2 3 2 3 4 3 4 5

通過上面這兩個栗子,也可以看出隱藏重複表示式的特性。另外,第一行定義幾個常量,比如a,b,c三個,那麼下一行一定也是定義3個,少或多編譯時都會報錯,這也體現了隱藏重複的特性。
下面是下一行常量個數不一致情形編譯時報錯:

[email protected]:~/gopath$ make -f Makefile-boo 
go install github.com/user/test
# github.com/user/test
src/github.com/user/test/test.go:8: missing value in const declaration
src/github.com/user/test/test.go:9: missing value in const declaration
src/github.com/user/test/test.go:11: undefined: e
src/github.com/user/test/test.go:11: undefined: h
Makefile-boo:6: recipe for target 'all' failed
make: *** [all] Error 2
  • 中間插隊的兩種情形
  1 package main
  2 
  3 import "fmt"
  4 
  5 func main() {
  6         const (
  7                 a = iota
  8                 b
  9                 c = 201
 10                 d
 11                 e
 12         )
 13         fmt.Println("iota test: ", a, b, c, d, e)
 14 }

[email protected]:~/gopath$ ./bin/test 
iota test:  0 1 201 201 201

這裡d,e重複前面的c,將上述程式碼稍作修改:

  1 package main
  2 
  3 import "fmt"
  4 
  5 func main() {
  6         const (
  7                 a = iota
  8                 b
  9                 c = 201
 10                 d = iota
 11                 e
 12         )
 13         fmt.Println("iota test: ", a, b, c, d, e)
 14 }
[email protected]:~/gopath$ ./bin/test 
iota test:  0 1 201 3 4

這兩種寫法,其實也是對Go語言中隱藏重複表示式的體現,具體情況要具體使用。

變數

變裡定義有以下幾種定義:
var varname type // var i int
varname := value // i := 100
varname := type(value) // i := float64(9838475845)

相關推薦

.識別符號常量列舉變數

識別符號 與C,C++,JAVA等語言類似,支援字母、數字與下劃線命名的識別符號。所有識別符號區分大小寫,比如Xyzabc, xYzAbc, xyzABC是三個不同的識別符號。 關鍵字 break default func

Java語言基礎()---關鍵字識別符號註釋常量變數運算子

Java語言基礎組成:關鍵字、識別符號、註釋、常量和變數、運算子、語句、函式、陣列 一. 關鍵字 【注】關鍵字的所有的字母都是小寫  1. 用於定義資料型別的關鍵字 基本資料型別 數值型 整數:byte(位元組) sho

Java基礎學習 (字符集識別符號關鍵字註釋變數基本資料型別非基本資料型別高精度數字)

一 字符集:        java採用Unicode字符集 包含65535個字元 二 識別符號:         由字母、數字、下劃線及美元符號等組成的一個字元序列,用來標識變數、方法名、類名、介面名等

Go入門自學寶典004-變數(宣告與定義)常量(const )列舉(iota)

004-變數 變數是幾乎所有程式語言中最基本的組成元素,變數是程式執行期間可以改變的量。 從根本上說,變數相當於是對一塊資料儲存空間的命名,程式可以通過定義一個變數來申請一塊資料儲存空間,之後可以通過引用變數名來使用這塊儲存空間。 004.1 變數宣告 Go語言

IOS 之 Swift教程() -入門語法(常量變數)

Swift常量、變數的定義和使用 眾所周知大家在使用其他語言時也有常量和變數的區分,因此swift也不列外. 常量和變數把一個名字(比如maxNumber or minNumber)和一個指定型別的值(比如整形10,浮點型10.0,字串”hello Worl

Python基礎---變數常量進位制轉義字元識別符號input()函式

# 向控制檯輸出hello world print('hello "world"') #輸出文字框 print(""" --------------- |-------------| |中二勢力哈哈哈| |-------------| ---------------""") # 這是多行註釋''

Tensorflow學習筆記——張量常量變數

1 張量和圖 TensorFlow是一種採用資料流圖(data flow graphs),用於數值計算的開源軟體庫。其中 Tensor 代表傳遞的資料為張量(多維陣列),Flow 代表使用計算圖進行運算。資料流圖用「結點」(nodes)和「邊」(edges)組成的有向圖來描

C#入門基礎01(變數常量)

1.C#是什麼?(半開源,只有定義,沒有實現) C#是微軟公司推出的一種語法簡潔,型別安全的面向物件的程式語言。開發人員可以通過它編寫在.NET Framework 上執行的各種安全可靠的應用程式。能夠開發桌面應用程式以及WEB程式。 2..NET Fr

JAVA中的識別符號變數關鍵字變數常量運算子優先順序

  1.Java語言規定識別符號由任意順序的字母、下劃線、美元符號和數字組成,並且第一個字元不能使數字。識別符號不能是Java中的保留關鍵字。 2.Java語言使用unicode標準字符集,最多可以標識65535個字元。因此,java語言中的字母不僅包括通常的拉丁文 3.關

常量和變量

浮點數 大寫 字母 特殊符號 改變 字符串 內存 將不 首字母 1.常量: 在程序運行過程中,值不會發生改變的標識符 常量分類:整數常量、浮點數常量、布爾常量【true和false】、字符常量、字符串常量、null常量。 打印的時候每次只能打印一個值, 註意:字符表示單個的

第二節:Python的變數常量

變數 看下面這個輸出 print('整數達斯柯達敬愛的卡斯加大受打擊啊') 變數:就是將運算的中間結果暫時存到記憶體中,以便後續程式碼呼叫 res = '整數達斯柯達敬愛的卡斯加大受打擊啊') print(res) 這樣是不是更優美了,就像中國的姓名不能隨便起一樣,程式中的變數也不能隨便的定義

Go語言學習筆記(二) 基本語法變數常量型別

基本語法 Go語言中的標記 Go程式是由各種標記組成的,標記可以是關鍵字,識別符號,常量,字串文字或符號。例如,以下Go語句由六個標記組成: fmt.Println("Hello, World!") 每個標記單獨表示為: fmt . Println ( "Hello, World

Web安全學習_PHP學習_語法變數常量函式陣列

一、語法 定界符php程式碼需要包含在<?php ?>中 <?php 程式碼段 ?> 註釋方法 <?php //單行註釋 #單行註釋 /* 多行 註釋 */ ?> 二、 變數

靜態變數列舉以及靜態程式碼塊的使用場景

摘要: 靜態變數、列舉、以及靜態程式碼塊的使用場景     記得最開始寫程式碼的時候,當使用到字串的時候,就在使用的 地方定義一個String型別的字串,但是後面發現在一個類中定義了很多重複的字串【最初的階段】。   &n

1.成員變數&全域性變數&區域性變數&靜態變數常量和方法

原文:https://blog.csdn.net/panpuqin/article/details/75091468  原文:https://blog.csdn.net/bobo_993/article/details/73655765  @interface 

警告 1 通過例項訪問共享成員常量成員列舉成員或巢狀型別;將不計算限定表示式。

Public Class Form1 Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click Try Dim test

【swift】1常量變數

swift和python不一樣的是,他作為系統程式語言,不像python那樣拿來就用,要先對物件進行宣告,而宣告過後,也有所不同; 一、常量與變數 常量的值一旦設定就不能改變,而變數的值可以隨意更改。 常量用let關鍵字進行宣告,變數用var關鍵字進行宣告; 1.1宣

常量進位制原反補碼變數字元和字串參與運算運算子賦值運算子

A:什麼是常量 * 在程式執行的過程中其值不可以發生改變 B:Java中常量的分類 字面值常量 自定義常量(面向物件部分講) C:字面值常量的分類 字串常量 用雙引號括起來的內容 字元常量 用單引號括起來的內容,裡面只能放單個數

JAVA-day01-前言入門程式常量變數

黑馬程式設計師: 一、前言 1.1 Java語言概述 Java語言 JAVA語言是美國Sun公司在1995年推出的高階的程式語言。 程式語言是計算機的語言,人們可以使用程式語言對計算機下達命令,讓計算機完成人們需要的功能。 發展歷史 1995年Sun公司釋出Ja

php第二節(變數常量

<?php /** * 型別轉換 * 自動轉換 資料在運算過程中自動轉換 * 空字串 false * "0" false * null false * 0 false * 空陣列 false * 1、 轉為布林型(即返回值為0) *    空字串''或""