是說?20060102150405 這個嗎,原因大致如下:
在思南等地區,都構建了全面的區域性戰略布局,加強發展的系統性、市場前瞻性、產品創新能力,以專注、極致的服務理念,為客戶提供網站設計制作、成都做網站 網站設計制作定制設計,公司網站建設,企業網站建設,品牌網站設計,網絡營銷推廣,成都外貿網站建設公司,思南網站建設費用合理。
可讀性高,所見即所得
實現簡單,排除二義性(15或3代表時,4代表分,5代表秒,06或2006代表年)
請參考源代碼:
187 case?'3':
188 return?layout[0:i],?stdHour12,?layout[i+1:]
189
190 case?'4':
191 return?layout[0:i],?stdMinute,?layout[i+1:]
192
193 case?'5':
194 return?layout[0:i],?stdSecond,?layout[i+1:]
195
部署簡單。Go編譯生成的是一個靜態可執行文件,除了glibc外沒有其他外部依賴。這讓部署變得異常方便:目標機器上只需要一個基礎的系統和必要的管理、監控工具,完全不需要操心應用所需的各種包、庫的依賴關系,大大減輕了維護的負擔。這和Python有著巨大的區別。由于歷史的原因,Python的部署工具生態相當混亂【比如setuptools,distutils,pip,
buildout的不同適用場合以及兼容性問題】。官方PyPI源又經常出問題,需要搭建私有鏡像,而維護這個鏡像又要花費不少時間和精力。
并發性好。Goroutine和channel使得編寫高并發的服務端軟件變得相當容易,很多情況下完全不需要考慮鎖機制以及由此帶來的各種問題。單個Go應用也能有效的利用多個CPU核,并行執行的性能好。這和Python也是天壤之比。多線程和多進程的服務端程序編寫起來并不簡單,而且由于全局鎖GIL的原因,多線程的Python程序并不能有效利用多核,只能用多進程的方式部署;如果用標準庫里的multiprocessing包又會對監控和管理造成不少的挑戰【我們用的supervisor管理進程,對fork支持不好】。部署Python應用的時候通常是每個CPU核部署一個應用,這會造成不少資源的浪費,比如假設某個Python應用啟動后需要占用100MB內存,而服務器有32個CPU核,那么留一個核給系統、運行31個應用副本就要浪費3GB的內存資源。
良好的語言設計。從學術的角度講Go語言其實非常平庸,不支持許多高級的語言特性;但從工程的角度講,Go的設計是非常優秀的:規范足夠簡單靈活,有其他語言基礎的程序員都能迅速上手。更重要的是Go自帶完善的工具鏈,大大提高了團隊協作的一致性。比如gofmt自動排版Go代碼,很大程度上杜絕了不同人寫的代碼排版風格不一致的問題。把編輯器配置成在編輯存檔的時候自動運行gofmt,這樣在編寫代碼的時候可以隨意擺放位置,存檔的時候自動變成正確排版的代碼。此外還有gofix,
govet等非常有用的工具。
執行性能好。雖然不如C和Java,但通常比原生Python應用還是高一個數量級的,適合編寫一些瓶頸業務。內存占用也非常省。
1、簡單易學。
Go語言的作者本身就很懂C語言,所以同樣Go語言也會有C語言的基因,所以對于程序員來說,Go語言天生就會讓人很熟悉,容易上手。
2、并發性好。
Go語言天生支持并發,可以充分利用多核,輕松地使用并發。 這是Go語言最大的特點。
描述
Go的語法接近C語言,但對于變量的聲明有所不同。Go支持垃圾回收功能。Go的并行模型是以東尼·霍爾的通信順序進程(CSP)為基礎,采取類似模型的其他語言包括Occam和Limbo,但它也具有Pi運算的特征,比如通道傳輸。
在1.8版本中開放插件(Plugin)的支持,這意味著現在能從Go中動態加載部分函數。
與C++相比,Go并不包括如枚舉、異常處理、繼承、泛型、斷言、虛函數等功能,但增加了 切片(Slice) 型、并發、管道、垃圾回收、接口(Interface)等特性的語言級支持。
【格式化輸出】
// 格式化輸出:將 arg 列表中的 arg 轉換為字符串輸出
// 使用動詞 v 格式化 arg 列表,非字符串元素之間添加空格
Print(arg列表)
// 使用動詞 v 格式化 arg 列表,所有元素之間添加空格,結尾添加換行符
Println(arg列表)
// 使用格式字符串格式化 arg 列表
Printf(格式字符串, arg列表)
// Print 類函數會返回已處理的 arg 數量和遇到的錯誤信息。
【格式字符串】
格式字符串由普通字符和占位符組成,例如:
"abc%+ #8.3[3]vdef"
其中 abc 和 def 是普通字符,其它部分是占位符,占位符以 % 開頭(注:%% 將被轉義為一個普通的 % 符號,這個不算開頭),以動詞結尾,格式如下:
%[旗標][寬度][.精度][arg索引]動詞
方括號中的內容可以省略。
【旗標】
旗標有以下幾種:
空格:對于數值類型的正數,保留一個空白的符號位(其它用法在動詞部分說明)。
0 :用 0 進行寬度填充而不用空格,對于數值類型,符號將被移到所有 0 的前面。
其中 "0" 和 "-" 不能同時使用,優先使用 "-" 而忽略 "0"。
【寬度和精度】
“寬度”和“精度”都可以寫成以下三種形式:
數值 | * | arg索引*
其中“數值”表示使用指定的數值作為寬度值或精度值,“ ”表示使用當前正在處理的 arg 的值作為寬度值或精度值,如果這樣的話,要格式化的 arg 將自動跳轉到下一個。“arg索引 ”表示使用指定 arg 的值作為寬度值或精度值,如果這樣的話,要格式化的 arg 將自動跳轉到指定 arg 的下一個。
寬度值:用于設置最小寬度。
精度值:對于浮點型,用于控制小數位數,對于字符串或字節數組,用于控制字符數量(不是字節數量)。
對于浮點型而言,動詞 g/G 的精度值比較特殊,在適當的情況下,g/G 會設置總有效數字,而不是小數位數。
【arg 索引】
“arg索引”由中括號和 arg 序號組成(就像上面示例中的 [3]),用于指定當前要處理的 arg 的序號,序號從 1 開始:
'[' + arg序號 + ']'
【動詞】
“動詞”不能省略,不同的數據類型支持的動詞不一樣。
[通用動詞]
v:默認格式,不同類型的默認格式如下:
布爾型:t
整 型:d
浮點型:g
復數型:g
字符串:s
通 道:p
指 針:p
無符號整型:x
T:輸出 arg 的類型而不是值(使用 Go 語法格式)。
[布爾型]
t:輸出 true 或 false 字符串。
[整型]
b/o/d:輸出 2/8/10 進制格式
x/X :輸出 16 進制格式(小寫/大寫)
c :輸出數值所表示的 Unicode 字符
q :輸出數值所表示的 Unicode 字符(帶單引號)。對于無法顯示的字符,將輸出其轉義字符。
U :輸出 Unicode 碼點(例如 U+1234,等同于字符串 "U+%04X" 的顯示結果)
對于 o/x/X:
如果使用 "#" 旗標,則會添加前導 0 或 0x。
對于 U:
如果使用 "#" 旗標,則會在 Unicode 碼點后面添加相應的 '字符'(前提是該字符必須可顯示)
[浮點型和復數型]
b :科學計數法(以 2 為底)
e/E:科學計數法(以 10 為底,小寫 e/大寫 E)
f/F:普通小數格式(兩者無區別)
g/G:大指數(指數 = 6)使用 %e/%E,其它情況使用 %f/%F
[字符串或字節切片]
s :普通字符串
q :雙引號引起來的 Go 語法字符串
x/X:十六進制編碼(小寫/大寫,以字節為元素進行編碼,而不是字符)
對于 q:
如果使用了 "+" 旗標,則將所有非 ASCII 字符都進行轉義處理。
如果使用了 "#" 旗標,則輸出反引號引起來的字符串(前提是
字符串中不包含任何制表符以外的控制字符,否則忽略 # 旗標)
對于 x/X:
如果使用了 " " 旗標,則在每個元素之間添加空格。
如果使用了 "#" 旗標,則在十六進制格式之前添加 0x 前綴。
[指針類型]
p :帶 0x 前綴的十六進制地址值。
[符合類型]
復合類型將使用不同的格式輸出,格式如下:
結 構 體:{字段1 字段2 ...}
數組或切片:[元素0 元素1 ...]
映 射:map[鍵1:值1 鍵2:值2 ...]
指向符合元素的指針:{}, [], map[]
復合類型本身沒有動詞,動詞將應用到復合類型的元素上。
結構體可以使用 "+v" 同時輸出字段名。
【注意】
1、如果 arg 是一個反射值,則該 arg 將被它所持有的具體值所取代。
2、如果 arg 實現了 Formatter 接口,將調用它的 Format 方法完成格式化。
3、如果 v 動詞使用了 # 旗標(%#v),并且 arg 實現了 GoStringer 接口,將調用它的 GoString 方法完成格式化。
如果格式化操作指定了字符串相關的動詞(比如 %s、%q、%v、%x、%X),接下來的兩條規則將適用:
4。如果 arg 實現了 error 接口,將調用它的 Error 方法完成格式化。
5。如果 arg 實現了 string 接口,將調用它的 String 方法完成格式化。
在實現格式化相關接口的時候,要避免無限遞歸的情況,比如:
type X string
func (x X) String() string {
return Sprintf("%s", x)
}
在格式化之前,要先轉換數據類型,這樣就可以避免無限遞歸:
func (x X) String() string {
return Sprintf("%s", string(x))
}
無限遞歸也可能發生在自引用數據類型上面,比如一個切片的元素引用了切片自身。這種情況比較罕見,比如:
a := make([]interface{}, 1)
a[0] = a
fmt.Println(a)
【格式化輸入】
// 格式化輸入:從輸入端讀取字符串(以空白分隔的值的序列),
// 并解析為具體的值存入相應的 arg 中,arg 必須是變量地址。
// 字符串中的連續空白視為單個空白,換行符根據不同情況處理。
// \r\n 被當做 \n 處理。
// 以動詞 v 解析字符串,換行視為空白
Scan(arg列表)
// 以動詞 v 解析字符串,換行結束解析
Scanln(arg列表)
// 根據格式字符串中指定的格式解析字符串
// 格式字符串中的換行符必須和輸入端的換行符相匹配。
Scanf(格式字符串, arg列表)
// Scan 類函數會返回已處理的 arg 數量和遇到的錯誤信息。
【格式字符串】
格式字符串類似于 Printf 中的格式字符串,但下面的動詞和旗標例外:
p :無效
T :無效
e/E/f/F/g/G:功能相同,都是掃描浮點數或復數
s/v :對字符串而言,掃描一個被空白分隔的子串
對于整型 arg 而言,v 動詞可以掃描帶有前導 0 或 0x 的八進制或十六進制數值。
寬度被用來指定最大掃描寬度(不會跨越空格),精度不被支持。
如果 arg 實現了 Scanner 接口,將調用它的 Scan 方法掃描相應數據。只有基礎類型和實現了 Scanner 接口的類型可以使用 Scan 類方法進行掃描。
【注意】
連續調用 FScan 可能會丟失數據,因為 FScan 中使用了 UnreadRune 對讀取的數據進行撤銷,而參數 io.Reader 只有 Read 方法,不支持撤銷。比如:
本教程介紹了使用 Godatabase/sql及其標準庫中的包訪問關系數據庫的基礎知識。
您將使用的database/sql包包括用于連接數據庫、執行事務、取消正在進行的操作等的類型和函數。
在本教程中,您將創建一個數據庫,然后編寫代碼來訪問該數據庫。您的示例項目將是有關老式爵士樂唱片的數據存儲庫。
首先,為您要編寫的代碼創建一個文件夾。
1、打開命令提示符并切換到您的主目錄。
在 Linux 或 Mac 上:
在 Windows 上:
2、在命令提示符下,為您的代碼創建一個名為 data-access 的目錄。
3、創建一個模塊,您可以在其中管理將在本教程中添加的依賴項。
運行go mod init命令,為其提供新代碼的模塊路徑。
此命令創建一個 go.mod 文件,您添加的依賴項將在其中列出以供跟蹤。
注意: 在實際開發中,您會指定一個更符合您自己需求的模塊路徑。有關更多信息,請參閱一下文章。
GO語言(二十五):管理依賴項(上)
GO語言(二十六):管理依賴項(中)
GO語言(二十七):管理依賴項(下)
接下來,您將創建一個數據庫。
在此步驟中,您將創建要使用的數據庫。您將使用 DBMS 本身的 CLI 創建數據庫和表,以及添加數據。
您將創建一個數據庫,其中包含有關黑膠唱片上的老式爵士樂錄音的數據。
這里的代碼使用MySQL CLI,但大多數 DBMS 都有自己的 CLI,具有類似的功能。
1、打開一個新的命令提示符。
在命令行,登錄到您的 DBMS,如下面的 MySQL 示例所示。
2、在mysql命令提示符下,創建一個數據庫。
3、切到您剛剛創建的數據庫,以便您可以添加表。
4、在文本編輯器的 data-access 文件夾中,創建一個名為 create-tables.sql 的文件來保存用于添加表的 SQL 腳本。
將以下 SQL 代碼粘貼到文件中,然后保存文件。
在此 SQL 代碼中:
(1)刪除名為album表。 首先執行此命令可以讓您更輕松地稍后重新運行腳本。
(2)創建一個album包含四列的表:title、artist和price。每行的id值由 DBMS 自動創建。
(3)添加帶有值的四行。
5、在mysql命令提示符下,運行您剛剛創建的腳本。
您將使用以下形式的source命令:
6、在 DBMS 命令提示符處,使用SELECT語句來驗證您是否已成功創建包含數據的表。
接下來,您將編寫一些 Go 代碼進行連接,以便進行查詢。
現在你已經有了一個包含一些數據的數據庫,開始你的 Go 代碼。
找到并導入一個數據庫驅動程序,該驅動程序會將您通過database/sql包中的函數發出的請求轉換為數據庫可以理解的請求。
1、在您的瀏覽器中,訪問SQLDrivers wiki 頁面以識別您可以使用的驅動程序。
2、使用頁面上的列表來識別您將使用的驅動程序。為了在本教程中訪問 MySQL,您將使用 Go-MySQL-Driver。
3、請注意驅動程序的包名稱 - 此處為github.com/go-sql-driver/mysql.
4、使用您的文本編輯器,創建一個用于編寫 Go 代碼的文件,并將該文件作為 main.go 保存在您之前創建的數據訪問目錄中。
5、進入main.go,粘貼以下代碼導入驅動包。
在此代碼中:
(1)將您的代碼添加到main包中,以便您可以獨立執行它。
(2)導入 MySQL 驅動程序github.com/go-sql-driver/mysql。
導入驅動程序后,您將開始編寫代碼以訪問數據庫。
現在編寫一些 Go 代碼,讓您使用數據庫句柄訪問數據庫。
您將使用指向結構的指針sql.DB,它表示對特定數據庫的訪問。
編寫代碼
1、進入 main.go,在import您剛剛添加的代碼下方,粘貼以下 Go 代碼以創建數據庫句柄。
在此代碼中:
(3)使用 MySQL 驅動程序Config和FormatDSN類型以收集連接屬性并將它們格式化為連接字符串的 DSN。
該Config結構使代碼比連接字符串更容易閱讀。
(4)調用sql.Open 初始化db變量,傳遞 FormatDSN。
(5)檢查來自 的錯誤sql.Open。例如,如果您的數據庫連接細節格式不正確,它可能會失敗。
為了簡化代碼,您調用log.Fatal結束執行并將錯誤打印到控制臺。在生產代碼中,您會希望以更優雅的方式處理錯誤。
(6)調用DB.Ping以確認連接到數據庫有效。在運行時, sql.Open可能不會立即連接,具體取決于驅動程序。您在Ping此處使用以確認 database/sql包可以在需要時連接。
(7)檢查來自Ping的錯誤,以防連接失敗。
(8)Ping如果連接成功,則打印一條消息。
文件的頂部現在應該如下所示:
3、保存 main.go。
1、開始跟蹤 MySQL 驅動程序模塊作為依賴項。
使用go get 添加 github.com/go-sql-driver/mysql 模塊作為您自己模塊的依賴項。使用點參數表示“獲取當前目錄中代碼的依賴項”。
2、在命令提示符下,設置Go 程序使用的DBUSER和DBPASS環境變量。
在 Linux 或 Mac 上:
在 Windows 上:
3、在包含 main.go 的目錄中的命令行中,通過鍵入go run來運行代碼。
連接成功了!
接下來,您將查詢一些數據。
二個參數是:要輸入的數,返回幾進制
10表示10進制;如果輸入一個大于10的值,就會用a-z的字母表示高后的數字;
比如16進制時,a=11,b=12.......
標題名稱:go語言format,go語言for循環翻轉
分享地址:http://m.newbst.com/article24/dssioje.html
成都網站建設公司_創新互聯,為您提供面包屑導航、標簽優化、域名注冊、外貿網站建設、手機網站建設、搜索引擎優化
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯