十年網(wǎng)站開(kāi)發(fā)經(jīng)驗(yàn) + 多家企業(yè)客戶 + 靠譜的建站團(tuán)隊(duì)
量身定制 + 運(yùn)營(yíng)維護(hù)+專業(yè)推廣+無(wú)憂售后,網(wǎng)站問(wèn)題一站解決
Go剛出那幾年一直在用它,我很確定不可能替代js。目前所有編程語(yǔ)言中,只有c/c++與js分別在OS/Browser領(lǐng)域成為“標(biāo)準(zhǔn)”,連Python在cg領(lǐng)域都被c#、js入侵,這種路徑效應(yīng),是幾十年都很難改變的。
成都創(chuàng)新互聯(lián)主營(yíng)保亭黎族網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營(yíng)網(wǎng)站建設(shè)方案,App定制開(kāi)發(fā),保亭黎族h5成都微信小程序搭建,保亭黎族網(wǎng)站營(yíng)銷(xiāo)推廣歡迎保亭黎族等地區(qū)企業(yè)咨詢
但是,如果使用Node做服務(wù)器端開(kāi)發(fā)則要小心,除非是采用typescript或者可以良好的應(yīng)用函數(shù)式編程,否則得不償失。服務(wù)器端,就應(yīng)該跑設(shè)計(jì)良好的靜態(tài)語(yǔ)言,或者是函數(shù)式的動(dòng)態(tài)語(yǔ)言(因?yàn)楹瘮?shù)式天生更健壯),anders說(shuō)過(guò)(c#作者):你告訴編譯器的越多,它為你做的越多;以前的瀏覽器端只能跑腳本語(yǔ)言是沒(méi)辦法,因?yàn)榇a是客戶端過(guò)來(lái),必須解釋執(zhí)行。
以前c++、java開(kāi)發(fā)效率不夠,所以才導(dǎo)致Python,Ruby、PHP等動(dòng)態(tài)語(yǔ)言的流行,現(xiàn)在靜態(tài)語(yǔ)言及其框架的開(kāi)發(fā)效率已經(jīng)接近動(dòng)態(tài)語(yǔ)言。像F#這樣支持自動(dòng)泛化的語(yǔ)言,可以擁有動(dòng)態(tài)語(yǔ)言同等水平的簡(jiǎn)潔性,卻仍可確保類(lèi)型安全。
當(dāng)然,你自己搞個(gè)博客,弄個(gè)小電商網(wǎng)站什么的,php都?jí)蛄恕?/p>
按值傳遞函數(shù)參數(shù),是拷貝參數(shù)的實(shí)際值到函數(shù)的形式參數(shù)的方法調(diào)用。在這種情況下,參數(shù)在函數(shù)內(nèi)變化對(duì)參數(shù)不會(huì)有影響。
默認(rèn)情況下,Go編程語(yǔ)言使用調(diào)用通過(guò)值的方法來(lái)傳遞參數(shù)。在一般情況下,這意味著,在函數(shù)內(nèi)碼不能改變用來(lái)調(diào)用所述函數(shù)的參數(shù)??紤]函數(shù)swap()的定義如下。
代碼如下:
/* function definition to swap the values */
func swap(int x, int y) int {
var temp int
temp = x /* save the value of x */
x = y /* put y into x */
y = temp /* put temp into y */
return temp;
}
現(xiàn)在,讓我們通過(guò)使實(shí)際值作為在以下示例調(diào)用函數(shù)swap():
代碼如下:
package main
import "fmt"
func main() {
/* local variable definition */
var a int = 100
var b int = 200
fmt.Printf("Before swap, value of a : %d\n", a )
fmt.Printf("Before swap, value of b : %d\n", b )
/* calling a function to swap the values */
swap(a, b)
fmt.Printf("After swap, value of a : %d\n", a )
fmt.Printf("After swap, value of b : %d\n", b )
}
func swap(x, y int) int {
var temp int
temp = x /* save the value of x */
x = y /* put y into x */
y = temp /* put temp into y */
return temp;
}
讓我們把上面的代碼放在一個(gè)C文件,編譯并執(zhí)行它,它會(huì)產(chǎn)生以下結(jié)果:
Before swap, value of a :100
Before swap, value of b :200
After swap, value of a :100
After swap, value of b :200
這表明,參數(shù)值沒(méi)有被改變,雖然它們已經(jīng)在函數(shù)內(nèi)部改變。
通過(guò)傳遞函數(shù)參數(shù),即是拷貝參數(shù)的地址到形式參數(shù)的參考方法調(diào)用。在函數(shù)內(nèi)部,地址是訪問(wèn)調(diào)用中使用的實(shí)際參數(shù)。這意味著,對(duì)參數(shù)的更改會(huì)影響傳遞的參數(shù)。
要通過(guò)引用傳遞的值,參數(shù)的指針被傳遞給函數(shù)就像任何其他的值。所以,相應(yīng)的,需要聲明函數(shù)的參數(shù)為指針類(lèi)型如下面的函數(shù)swap(),它的交換兩個(gè)整型變量的值指向它的參數(shù)。
代碼如下:
/* function definition to swap the values */
func swap(x *int, y *int) {
var temp int
temp = *x /* save the value at address x */
*x = *y /* put y into x */
*y = temp /* put temp into y */
}
現(xiàn)在,讓我們調(diào)用函數(shù)swap()通過(guò)引用作為在下面的示例中傳遞數(shù)值:
代碼如下:
package main
import "fmt"
func main() {
/* local variable definition */
var a int = 100
var b int= 200
fmt.Printf("Before swap, value of a : %d\n", a )
fmt.Printf("Before swap, value of b : %d\n", b )
/* calling a function to swap the values.
* a indicates pointer to a ie. address of variable a and
* b indicates pointer to b ie. address of variable b.
*/
swap(a, b)
fmt.Printf("After swap, value of a : %d\n", a )
fmt.Printf("After swap, value of b : %d\n", b )
}
func swap(x *int, y *int) {
var temp int
temp = *x /* save the value at address x */
*x = *y /* put y into x */
*y = temp /* put temp into y */
}
讓我們把上面的代碼放在一個(gè)C文件,編譯并執(zhí)行它,它會(huì)產(chǎn)生以下結(jié)果:
Before swap, value of a :100
Before swap, value of b :200
After swap, value of a :200
After swap, value of b :100
這表明變化的功能以及不同于通過(guò)值調(diào)用的外部體現(xiàn)的改變不能反映函數(shù)之外。
Go語(yǔ)言模板文件可以引入js文件或css文件,但是在引入的過(guò)程中,需要注意以下幾點(diǎn):
1. 引入的文件路徑應(yīng)該是相對(duì)路徑,而不是絕對(duì)路徑。
2. 在引入js文件時(shí),需要使用{{ url }} 模板函數(shù),用來(lái)拼接路徑, 這樣可以更好的兼容不同的路徑。
3. 如果是在統(tǒng)一的文件夾中的js文件,最好使用{{ static }}模板函數(shù),這樣可以更好的節(jié)省路徑長(zhǎng)度。
4. 在引用js文件時(shí),需要在頁(yè)面底部,可以使用{{ template }}模板函數(shù),這樣可以保證js文件在頁(yè)面加載完成之前就被加載。
總之,使用Go語(yǔ)言模板文件引入js文件,需要注意路徑的相對(duì)性,并且使用模板函數(shù)來(lái)拼接路徑,這樣可以更好的兼容不同的路徑,從而保證引用js文件的正確性。