go 成長路上的坑(1)

一、先來看一段代碼

package mainimport "fmt"type X struct{}func (x *X) test(){println("h1",x)
}
func main(){a := X{} a.test()(&X{}).test()(X{}).test()
}

猜猜他的結果

二、揭曉答案

package mainimport "fmt"type X struct{}func (x *X) test(){println("h1",x)
}
func main(){a := X{} a.test()   // 正確(&X{}).test()  // 正確 (X{}).test()  // 報錯 cannot call pointer method on X literal
}

三、為什么會是這樣的

  • 聲明賦值后調用指針方法
a :=x
a.test()  //正確
   指針方法可以調用的條件:receiver 必須是合法的指針(包括nil) 或者 能夠獲取實例的地址 a 是一個可以尋址的變量 ,所以可以調用test() 指針方法When the value is addressable, the language takes care of the common case of invoking a pointer method on a value by inserting the address operator automatically.翻譯:當值是可被尋址的,go語言會處理通常的情況:在一個值上面調用它的指針方法,編譯器會自動插入一個&取地址操作符
  • (&X{}).test() 正確
   指針方法可以調用的條件:receiver 必須是合法的指針(包括nil) 或者 能夠獲取實例的地址 (&X{})  是一個合法的指針
  • (X{}).test() 報錯
    變量名 = 右值X{}  就是右值右值 是不可尋址的(unaddressable) ,所以會報錯

四、疑問

(X{}).test()    不可尋址 報錯了
為什么
(&X{}).test()   能取到地址了?

轉載于:https://www.cnblogs.com/xiaobaiskill/p/10936481.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/387648.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/387648.shtml
英文地址,請注明出處:http://en.pswp.cn/news/387648.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

利用python腳本程序監控文件被修改

需求:利用python編寫監控程序,監控一個文件目錄,當目錄下的文件發生改變時,實現有修改就發報警郵件 郵件使用QQ郵箱,需要開啟smtp,使用手機發生短信,騰訊會給你發郵箱密碼。如下所示&#xff1a…

Oracle RAC

環境如下: Linux操作系統:Centos 6.5 64bit (這個版本的redhat 6內核等OS在安裝grid最后執行root.sh時會出現crs-4124,是oracle11.2.0.1的bug) VMware version:Workstation 8.0.3 build-703057 Oracle…

好程序員web前端分享MVVM框架Vue實現原理

好程序員web前端分享MVVM框架Vue實現原理,Vue.js是當下很火的一個JavaScript MVVM庫,它是以數據驅動和組件化的思想構建的。相比于Angular.js和react.js更加簡潔、更易于理解的API,使得我們能夠快速地上手并使用Vue.js。?1.什么是MVVM呢&…

HDU - 3516 Tree Construction

HDU - 3516 思路&#xff1a; 平行四邊形不等式優化dp &#xff1a;&#xff09; 代碼&#xff1a; #pragma GCC optimize(2) #pragma GCC optimize(3) #pragma GCC optimize(4) #include<bits/stdc.h> using namespace std; #define y1 y11 #define fi first #define se…

各類總線傳輸速率

1. USB總線 USB1.1&#xff1a; -------低速模式(low speed)&#xff1a;1.5Mbps -------全速模式(full speed)&#xff1a; 12Mbps USB2.0&#xff1a;向下兼容。增加了高速模式&#xff0c;最大速率480Mbps。 -------高速模式(high speed)&#xff1a; 25~480Mbps US…

Activiti多人會簽例子

Activiti中提供了多實例任務&#xff08;for-each&#xff09;將多實例應到到UserTask中可以實現會簽功能。 Multi-instance (for each) Description A multi-instance activity is a way of defining repetition for a certain step in a business process. In programming …

Django 【認證系統】auth

本篇內容 介紹Django框架提供的auth 認證系統 方法&#xff1a; 方法名 備注 create_user 創建用戶 authenticate 登錄驗證 login 記錄登錄狀態 logout 退出用戶登錄 is_authenticated 判斷用戶是否登錄 login_required裝飾器 進行登錄判斷 引入模塊 from django.…

兒科常見疾病的中成藥療法

孩子感冒&#xff0c;分清寒熱是關鍵——兒童風寒感冒和風熱感冒的中成藥內服外治法 兒童不養兒不知父母恩&#xff0c;每個人恐怕都只有自己做了父母&#xff0c;才能感受到父母的愛。嬰幼兒正處于最初的發育期&#xff0c;抵抗力弱&#xff0c;有個感冒發燒的也是常有的事兒。…

物化視圖

有個項目因為有比較多的查詢匯總&#xff0c;考慮到速度&#xff0c;所以使用了物化視圖。簡單的把用到的給整理了下。先看簡單創建語句&#xff1a;create materialized view mv_materialized_test refresh force on demand start with sysdate nextto_date(concat(to_char( s…

為什么直接ping知乎的ip不能訪問知乎的網站,而百度就可以?

結論&#xff1a; 簡單的說&#xff0c;就是baidu有錢。 正文&#xff1a; 大型網站依靠自身稀稀落落的服務器很難滿足網頁“秒開”的用戶需求&#xff0c;會加入CDN加速的隊伍。 當用戶訪問 http://www.zhihu.com 時&#xff0c;域名解析到距離用戶最近的CDN服務器的公網IP&am…

皮膚病

小偏方治百病/《國醫絕學健康館》編委會編.—重慶&#xff1a;重慶出版社&#xff0c;2010.3&#xff08;國醫絕學健康館&#xff09; 濕疹 苦參湯熏洗治陰囊濕疹方 苦參、蛇麻子中藥各50克&#xff0c;混合后&#xff0c;在晚上煎湯&#xff0c;可直接放在臉盆中煎。煎好后&am…

MySQL-ProxySQL中間件(一)| ProxySQL基本概念

目錄 MySQL-ProxySQL中間件&#xff08;一&#xff09;| ProxySQL基本概念&#xff1a; https://www.cnblogs.com/SQLServer2012/p/10972593.htmlMySQL-ProxySQL中間件&#xff08;二&#xff09;| Admin Schemas介紹&#xff1a;https://www.cnblogs.com/SQLServer2012/p/109…

01 ftp上傳簡單示例服務端

import json import socket import structserver socket.socket() server.bind((127.0.0.1,8001)) server.listen() conn,addr server.accept()#首先接收文件的描述信息的長度 struct_data_len conn.recv(4) data_len struct.unpack(i,struct_data_len)[0]# 通過文件信息的…

標簽td設置隱藏(hidden)

這樣設置這個td就不會被其他的td給擠掉了! 還有一種方法就是把tr標簽的solid設置為0px 這個方法把td標簽的left,right,bottom,top的邊框的solid全部設置為0px;轉載于:https://www.cnblogs.com/tranquilityMan/p/10972811.html

Windows Server 2008 NFS

打開Windows Server 2008的Dos運行窗口&#xff08;不是powershell&#xff09;&#xff0c;然后鍵入&#xff1a; servermanagercmd.exe -install FS-NFS-Services 安裝完畢之后&#xff0c;就要把NFS的存貯映射到Windows Server 2008上某個盤符以供使用&#xff0c;但為了…

金融反欺詐模型----項目實戰--機器學習

機器學習&#xff1a;從源數據清洗到特征工程建立談金融反欺詐模型訓練 本文旨在通過一個完整的實戰例子&#xff0c;演示從源數據清洗到特征工程建立&#xff0c;再到模型訓練&#xff0c;以及模型驗證和評估的一個機器學習的完整流程。由于初識機器學習&#xff0c;會比較多的…

快餐文化短視頻源碼行業競爭激烈,短視頻發展任重道遠

隨著移動互聯技術的興起&#xff0c;形式多樣的短視頻源碼軟件為受眾開辟了短視頻時代&#xff0c;賦予視頻以新的時代內涵。梨視頻、美拍、快手、抖音等APP充斥了人們的生活&#xff0c;因此不少人群對視頻軟件產生了依賴感。短視頻源碼APP行業發展至今&#xff0c;產品和營運…

Win7下如何掛載NFS共享目錄

NFS是Unix中廣泛使用的文件共享協議&#xff0c;在Linux下得到了傳承&#xff0c;使用簡單&#xff0c;讀寫性能強大。過去Windows與Linux共享文件夾需要使用Samba&#xff08;CIFS&#xff09;協議&#xff0c;雖然定制性更高&#xff0c;但設置和使用都比較繁瑣。Windows 7加…

使用Chrome瀏覽器自動下載文件并保存到指定的文件路徑(使用Selenium更改Chrome默認下載存儲路徑)...

https://blog.csdn.net/zbj18314469395/article/details/81207268轉載于:https://www.cnblogs.com/person008/p/10980964.html

vue 源碼學習(一) 目錄結構和構建過程簡介

Flow vue框架使用了Flow作為類型檢查&#xff0c;來保證項目的可讀性和維護性。vue.js的主目錄下有Flow的配置.flowconfig文件&#xff0c;還有flow目錄&#xff0c;指定了各種自定義類型。 在學習源碼前可以先看下Flow的語法 官方文檔 目錄結構 vue.js源碼主要在src下 src ├─…