1、學習曲線
成都創新互聯公司專注于三明企業網站建設,響應式網站開發,商城開發。三明網站建設公司,為三明等地區提供建站服務。全流程按需網站制作,專業設計,全程項目跟蹤,成都創新互聯公司專業和態度為您提供的服務
它包含了類C語法、GC內置和工程工具。這一點非常重要,因為Go語言容易學習,所以一個普通的大學生花一個星期就能寫出來可以上手的、高性能的應用。在國內大家都追求快,這也是為什么國內Go流行的原因之一。
2、效率
Go擁有接近C的運行效率和接近PHP的開發效率,這就很有利的支撐了上面大家追求快速的需求。
3、出身名門、血統純正
之所以說Go語言出身名門,是因為我們知道Go語言出自Google公司,這個公司在業界的知名度和實力自然不用多說。Google公司聚集了一批牛人,在各種編程語言稱雄爭霸的局面下推出新的編程語言,自然有它的戰略考慮。而且從Go語言的發展態勢來看,Google對它這個新的寵兒還是很看重的,Go自然有一個良好的發展前途。我們看看Go語言的主要創造者,血統純正這點就可見端倪了。
4、組合的思想、無侵入式的接口
Go語言可以說是開發效率和運行效率二者的完美融合,天生的并發編程支持。Go語言支持當前所有的編程范式,包括過程式編程、面向對象編程以及函數式編程。
5、強大的標準庫
這包括互聯網應用、系統編程和網絡編程。Go里面的標準庫基本上已經是非常穩定,特別是我這里提到的三個,網絡層、系統層的庫非常實用。
6、部署方便
我相信這一點是很多人選擇Go的最大理由,因為部署太方便,所以現在也有很多人用Go開發運維程序。
7、簡單的并發
它包含降低心智的并發和簡易的數據同步,我覺得這是Go最大的特色。之所以寫正確的并發、容錯和可擴展的程序如此之難,是因為我們用了錯誤的工具和錯誤的抽象,Go可以說這一塊做的相當簡單。
8、穩定性
Go擁有強大的編譯檢查、嚴格的編碼規范和完整的軟件生命周期工具,具有很強的穩定性,穩定壓倒一切。那么為什么Go相比于其他程序會更穩定呢?這是因為Go提供了軟件生命周期的各個環節的工具,如go
tool、gofmt、go test。
PostgreSQL和MySQL比較,它更加龐大一點,因為它是用來替代Oracle而設計的。所以在企業應用中采用PostgreSQL是一個明智的選擇。
現在MySQL被Oracle收購之后,有傳聞Oracle正在逐步的封閉MySQL,,鑒于此,將來我們也許會選擇PostgreSQL而不是MySQL作為項目的后端數據庫。
1、驅動
Go實現的支持PostgreSQL的驅動也很多,因為國外很多人在開發中使用了這個數據庫。
支持database/sql驅動,純Go寫的
支持database/sql驅動,純Go寫的
支持database/sql驅動,純Go寫的
在下面的示例中我采用了第一個驅動,因為它目前使用的人最多,在github上也比較活躍。
2、實例代碼
數據庫建表語句:
復制代碼
CREATE TABLE userinfo
(
uid serial NOT NULL,
username character varying(100) NOT NULL,
departname character varying(500) NOT NULL,
Created date,
CONSTRAINT userinfo_pkey PRIMARY KEY (uid)
)
WITH (OIDS=FALSE);
CREATE TABLE userdeatail
(
uid integer,
intro character varying(100),
profile character varying(100)
)
WITH(OIDS=FALSE);
復制代碼
看下面這個Go如何操作數據庫表數據:增刪改查
復制代碼
package main
import (
"database/sql"
"fmt"
_ "github.com/bmizerany/pq"
)
func main() {
db, err := sql.Open("postgres", "user=astaxie password=astaxie dbname=test sslmode=disable")
checkErr(err)
//插入數據
stmt, err := db.Prepare("INSERT INTO userinfo(username,departname,created) VALUES($1,$2,$3) RETURNING uid")
checkErr(err)
res, err := stmt.Exec("astaxie", "研發部門", "2012-12-09")
checkErr(err)
//pg不支持這個函數,因為他沒有類似MySQL的自增ID
id, err := res.LastInsertId()
checkErr(err)
fmt.Println(id)
//更新數據
stmt, err = db.Prepare("update userinfo set username=$1 where uid=$2")
checkErr(err)
res, err = stmt.Exec("astaxieupdate", 1)
checkErr(err)
affect, err := res.RowsAffected()
checkErr(err)
fmt.Println(affect)
//查詢數據
rows, err := db.Query("SELECT * FROM userinfo")
checkErr(err)
for rows.Next() {
var uid int
var username string
var department string
var created string
err = rows.Scan(uid, username, department, created)
checkErr(err)
fmt.Println(uid)
fmt.Println(username)
fmt.Println(department)
fmt.Println(created)
}
//刪除數據
stmt, err = db.Prepare("delete from userinfo where uid=$1")
checkErr(err)
res, err = stmt.Exec(1)
checkErr(err)
affect, err = res.RowsAffected()
checkErr(err)
fmt.Println(affect)
db.Close()
}
func checkErr(err error) {
if err != nil {
panic(err)
}
}
復制代碼
從上面的代碼我們可以看到,PostgreSQL是通過$1,$2這種方式來指定要傳遞的參數,而不是MySQL中的?,另外在sql.Open中的dsn信息的格式也與MySQL的驅動中的dsn格式不一樣,所以在使用時請注意它們的差異。
還有pg不支持LastInsertId函數,因為PostgreSQL內部沒有實現類似MySQL的自增ID返回,其他的代碼幾乎是一模一樣
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)等特性的語言級支持。
根據Go趨勢報告顯示,全球范圍內有 110 萬專業開發者選擇Go作為其主要開發語言。如果把以其他編程語言作為主要開發語言,同時也在使用Go的開發者計算在內,這一數字將高達270萬,中國的Go語言開發者排名第一,全球占比超過16%。
Go 語言能夠支持并構建與微服務結合的內部工具、架構和后端服務而深受IT企業歡迎,許多IT架構工具由Go構建而成,例如大型的Kubernetes、Docker和Vault等。數據顯示,有63%的具有統治力的云原生項目都是用Go構建。
因此,博睿數據在國內首發支持Go語言智能探針,對于提升業務性能,助力企業數字化轉型有著非常重要的意義。
SmartAgent探針技術集結主流編程語言
SmartAgent是博睿數據自研的自動化部署的一體化探針,在已支持JAVA,PHP,.net,Nodejs,.NET Core,Python的基礎上,新增了對Go語言的支持。
相較而言,傳統探針技術需要客戶配合修改應用程序代碼,風險不可控,需要客戶重新編譯程序集成探針,耦合度高。
不同于行業內傳統探針技術,博睿數據GoAgent探針直接后臺安裝即可,主動注入和嵌碼,降低與客戶程序耦合、無需二次修改代碼、提高 GoAgent 技術易用性。無論是動態編譯還是靜態編譯的代碼,博睿數據Samrt Agent技術都可以在不進行任何修改的情況下進行服務級別和代碼級別的分布式鏈路跟蹤,實現業務的可觀測性。
GoAgent探針支持六大功能,實現全鏈路追蹤
Go語言操作數據庫非常的簡單,
他也有一個類似JDBC的東西"database/sql"
實現類是"github.com/go-sql-driver/mysql"
使用過JDBC的人應該一看就懂
對日期的處理比較晦澀,沒有JAVA流暢:
復制代碼代碼如下:
package main
import (
"database/sql"
_ "github.com/go-sql-driver/mysql"
"log"
"time"
)
/*
create table t(
id int primary key auto_increment,
name varchar(20) not null,
ts timestamp
);
*/
func insert(db *sql.DB) {
stmt, err := db.Prepare("insert into t(name,ts) values(?,?)")
defer stmt.Close()
if err != nil {
log.Println(err)
return
}
ts, _ := time.Parse("2006-01-02 15:04:05", "2014-08-28 15:04:00")
stmt.Exec("edmond", ts)
}
func main() {
db, err := sql.Open("mysql", "xx:xx@tcp(127.0.0.1:3306)/mvbox?charset=utf8")
if err != nil {
log.Fatalf("Open database error: %s\n", err)
}
defer db.Close()
err = db.Ping()
if err != nil {
log.Fatal(err)
}
網站名稱:go語言prepare go語言適合做什么
網站路徑:http://m.newbst.com/article10/docjhgo.html
成都網站建設公司_創新互聯,為您提供手機網站建設、網站收錄、靜態網站、網站導航、微信公眾號、品牌網站建設
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯