Go語言。他主要是在一些網頁版的服務器中用于系統編程的一種語言。他是谷歌開發的一種編程語言。在一定程度上,谷歌有一定的壟斷作用。不能隨隨便便的在語言當中添加其他的語言成分。

成都創新互聯是少有的做網站、網站制作、營銷型企業網站、微信小程序、手機APP,開發、制作、設計、買鏈接、推廣優化一站式服務網絡公司,自2013年起,堅持透明化,價格低,無套路經營理念。讓網頁驚喜每一位訪客多年來深受用戶好評
Go語言由Google公司開發,并于2009年開源,相比Java/Python/C等語言,Go尤其擅長并發編程,性能堪比C語言,開發效率肩比Python,被譽為“21世紀的C語言”。
Go語言在云計算、大數據、微服務、高并發領域應用應用非常廣泛。BAT大廠正在把Go作為新項目開發的首選語言。
Go語言能干什么?
1、服務端開發:以前你使用C或者C++做的那些事情,用Go來做很合適,例如日志處理、文件系統、監控系統等;
2、DevOps:運維生態中的Docker、K8s、prometheus、grafana、open-falcon等都是使用Go語言開發;
3、網絡編程:大量優秀的Web框架如Echo、Gin、Iris、beego等,而且Go內置的 net/http包十分的優秀;
4、Paas云平臺領域:Kubernetes和Docker Swarm等;
5、分布式存儲領域:etcd、Groupcache、TiDB、Cockroachdb、Influxdb等;
6、區塊鏈領域:區塊鏈里面有兩個明星項目以太坊和fabric都使用Go語言;
7、容器虛擬化:大名鼎鼎的Docker就是使用Go語言實現的;
8、爬蟲及大數據:Go語言天生支持并發,所以十分適合編寫分布式爬蟲及大數據處理。
Go語言主要用作服務器端開發。
其定位是用來開發“大型軟件”的,適合于需要很多程序員一起開發,并且開發周期較長的大型軟件和支持云計算的網絡服務。
Go語言融合了傳統編譯型語言的高效性和腳本語言的易用性和富于表達性,不僅提高了項目的開發速度,而且后期維護起來也非常輕松。
編譯器
當前有兩個Go編譯器分支,分別為官方編譯器gc和gccgo。官方編譯器在初期使用C寫成,后用Go重寫從而實現自舉。Gccgo是一個使用標準GCC作為后端的Go編譯器。
官方編譯器支持跨平臺編譯(但不支持CGO),允許將源代碼編譯為可在目標系統、架構上執行的二進制文件。
go語言之所以能成為我國最火的語言,是因為編寫服務端高并發程序的優勢。我大中華區但凡pv,日活高點的網站,應用,誰沒點這個需求。
這個領域中最優的幾個:golang,erlang,rust。日常生活中人類社交是當今社會上的必然性,人們也伴隨著科技時代的發展,智能電子產品的使用中也必然少不了語言輸入,文字的編輯,語言轉換的便利都均可來源于go語音輸入法。
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返回,其他的代碼幾乎是一模一樣
新聞名稱:go語言適合做驅動嗎 go語言安裝
標題網址:http://www.yijiale78.com/article4/ddociie.html
成都網站建設公司_創新互聯,為您提供網站營銷、服務器托管、標簽優化、手機網站建設、域名注冊、微信小程序
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯