整合營(yíng)銷服務(wù)商

          電腦端+手機(jī)端+微信端=數(shù)據(jù)同步管理

          免費(fèi)咨詢熱線:

          HTML常用全部代碼,你懂,你不想成功都難

          Low了,網(wǎng)頁(yè)居然還用這么老掉牙的特效!弄個(gè)粗體字,下劃線就是突出重點(diǎn)了?真是一股濃濃的鄉(xiāng)村風(fēng)撲面而來(lái);弄個(gè)圖在頁(yè)面飄來(lái)飄去就是動(dòng)畫(huà)效果了,你要這么認(rèn)為的話那我只能保持沉默了。在HTML5占領(lǐng)著整個(gè)互聯(lián)網(wǎng)之時(shí),想透過(guò)網(wǎng)頁(yè)抓住所有人的眼球,因循守舊是行不通的。因此,有你不能不知道的HTML常用代碼。只有熟悉掌握了常用的HTML代碼,你才能在編寫(xiě)網(wǎng)頁(yè)的時(shí)候做到行云流水,用處處流露著細(xì)膩和創(chuàng)意的動(dòng)效細(xì)節(jié)打動(dòng)所有人。

          在這里還是要說(shuō)一下我自己建的前端JavaScript學(xué)習(xí)交流群:574462090,不管你是小白還是大牛,小編我都挺歡迎,小白嘛,多問(wèn)點(diǎn)問(wèn)題也就學(xué)好了,不定期分享干貨,包括最新的2017年前端學(xué)習(xí)資料,歡迎初學(xué)和進(jìn)階中的小伙伴。

          html代碼大全:結(jié)構(gòu)性定義

          文件類型<HTML></HTML> (放在檔案的開(kāi)頭與結(jié)尾)

          文件主題<TITLE></TITLE> (必須放在「文頭」區(qū)塊內(nèi))

          文頭<HEAD></HEAD> (描述性資料,像是「主題」)

          文體<BODY></BODY> (文件本體)

          標(biāo)題<H?></H?> (從1到6,有六層選擇)

          標(biāo)題的對(duì)齊 <H?ALIGN=LEFT|CENTER|RIGHT></H?>

          區(qū)分<DIV></DIV>

          區(qū)分的對(duì)齊 <DIVALIGN=LEFT|RIGHT|CENTER|JUSTIFY></DIV>

          引文區(qū)塊<BLOCKQUOTE></BLOCKQUOTE> (通常會(huì)內(nèi)縮)

          強(qiáng)調(diào)<EM></EM> (通常會(huì)以斜體顯示)

          特別強(qiáng)調(diào)<STRONG></STRONG> (通常會(huì)以加粗顯示)

          引文<CITE></CITE> (通常會(huì)以斜體顯示)

          碼<CODE></CODE> (顯示原始碼之用)

          樣本<SAMP></SAMP>

          鍵盤(pán)輸入<KBD></KBD>

          變數(shù)<VAR></VAR>

          定義<DFN></DFN> (有些瀏覽器不提供)

          地址 <ADDRESS></ADDRESS>

          大字<BIG></BIG>

          小字<SMALL></SMALL>

          與外觀相關(guān)的標(biāo)簽(作者自訂的表現(xiàn)方式)

          加粗<B></B>

          斜體<I></I>

          底線<U></U> (尚有些瀏覽器不提供)

          刪除線<S></S> (尚有些瀏覽器不提供)

          下標(biāo)<SUB></SUB>

          上標(biāo)<SUP></SUP>

          打字機(jī)體<TT></TT> (用單空格字型顯示)

          預(yù)定格式<PRE></PRE> (保留文件中空格的大?。?/p>

          預(yù)定格式的寬度<PRE WIDTH=?></PRE>(以字元計(jì)算)

          向中看齊<CENTER></CENTER> (文字與圖片都可以)

          閃耀<BLINK></BLINK> (有史以來(lái)最被嘲弄的標(biāo)簽)

          字體大小 <FONTSIZE=?></FONT>(從1到7)

          改變字體大小 <FONTSIZE=+|-?></FONT>

          基本字體大小 <BASEFONTSIZE=?> (從1到7; 內(nèi)定為3)

          字體顏色 <FONTCOLOR="#$$"></FONT>($$為顏色代碼)

          2

          html代碼大全:修改頁(yè)面的實(shí)用性HTML代碼

          1)貼圖:<img src="圖片地址">

          2)加入連接:<a href="所要連接的相關(guān)地址">寫(xiě)上你想寫(xiě)的字</a>

          3)在新窗口打開(kāi)連接:<a href="相關(guān)地址" target="_blank">寫(xiě)上要寫(xiě)的字</a>

          4)移動(dòng)字體(走馬燈):<marquee>寫(xiě)上你想寫(xiě)的字</marquee>

          5)字體加粗:<b>寫(xiě)上你想寫(xiě)的字</b>

          6)字體斜體:<i>寫(xiě)上你想寫(xiě)的字</i>

          7)字體下劃線: <u>寫(xiě)上你想寫(xiě)的字</u>

          8)字體刪除線: <s>寫(xiě)上你想寫(xiě)的字</s>

          9)字體加大: <big>寫(xiě)上你想寫(xiě)的字</big>

          10)字體控制大?。?lt;h1>寫(xiě)上你想寫(xiě)的字</h1> (其中字體大小可從h1-h5,h1最大,h5最小)

          11)更改字體顏色:<font color="#value">寫(xiě)上你想寫(xiě)的字</font>(其中value值在000000與ffffff(16位進(jìn)制)之間

          12)消除連接的下劃線:<a href="相關(guān)地址" style="text-decoration:none">寫(xiě)上你想寫(xiě)的字</a>

          13)貼音樂(lè):<embed src="音樂(lè)地址" width="寬度" height="高度" autostart=false>

          14)貼flash: <embed src="flash地址" width="寬度" height="高度">

          15)貼影視文件:<img dynsrc="文件地址" width="寬度" height="高度" start=mouseover>

          16)換行:<br>

          17)段落:<p>段落</p>

          18)原始文字樣式:<pre>正文</pre>

          19)換帖子背景:<body background="背景圖片地址">

          20)固定帖子背景不隨滾動(dòng)條滾動(dòng):<body background="背景圖片地址" body

          bgproperties=fixed>

          21)定制帖子背景顏色:<body bgcolor="#value">(value值見(jiàn)10)

          22)帖子背景音樂(lè):<bgsound="背景音樂(lè)地址" loop=infinite>

          23)貼網(wǎng)頁(yè):<iframe. src="相關(guān)地址" width="寬度" height="高度"></iframe>

          3

          html代碼大全:常常會(huì)遇到的問(wèn)題

          點(diǎn)擊關(guān)閉窗口

          <a href="javascript.:top.window.close();">點(diǎn)擊關(guān)閉窗口</a>!

          請(qǐng)問(wèn)如何去掉主頁(yè)右面的滾動(dòng)條?

          <body scroll="no">

          <body style="overflow-y:hidden">

          如何做到讓一個(gè)網(wǎng)頁(yè)自動(dòng)關(guān)閉.

          <html>

          <head>

          <OBJECT id=closes type="application/x-oleobject" classid="clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11">

          <param name="Command" value="Close">

          </object>

          </head>

          <body >

          這個(gè)窗口會(huì)在10秒過(guò)后自動(dòng)關(guān)閉,而且不會(huì)出現(xiàn)提示. </body>

          如何在不刷新頁(yè)面的情況下刷新css?

          <style>

          button{ color:#000000;}

          </style>

          <button nclick=document.styleSheets[0].rules[0].style.color=‘‘‘‘red‘‘‘‘>點(diǎn)擊按鈕直接修改style標(biāo)簽里button選擇符使按鈕改為  紅色</button>

          請(qǐng)問(wèn)如何讓網(wǎng)頁(yè)自動(dòng)刷新?

          在head部記入<META. HTTP-EQUIV="Refresh" c>其中20為20秒后自動(dòng)刷新,你可以更改為任意值。

          如何讓頁(yè)面自動(dòng)刷新?

          方法一,用refresh

          HTML 代碼片段如下:

          <head>

          <meta. http-equiv="refresh" c>

          </head>

          5表示刷新時(shí)間

          [Ctrl+A 全部選擇 提示:你可先修改部分代碼,再按運(yùn)行]

          方法二,使用setTimeout控制

          <img src=/logo.gif>

          <script>

          function rl(){

          document.location.reload()

          }

          setTimeout(rl,2000)

          </SCRIPT>

          如何讓超鏈接沒(méi)有下劃線

          在源代碼中的<HEAD>…</HEAD>之間輸入如下代碼:

          <style. type="text/css"> <!--

          a { text-decoration: none}

          --> </style>

          請(qǐng)問(wèn)如何去掉IE的上下滾動(dòng)條?

          <body style=‘‘‘‘overflow:scroll;overflow-y:hidden‘‘‘‘>

          </body>

          怎樣才能把RealPlayer文件在網(wǎng)頁(yè)做一個(gè)試聽(tīng)連接?

          <embed height=25 src=51js.rm type=audio/x-pn-realaudio-plugin width=50 autostart="false" c>

          如何用html實(shí)現(xiàn)瀏覽器上后退按鈕的功能?

          <a href="java script.:history.go(-1)">點(diǎn)擊后退</a>

          或者

          <script> history.back() </SCRIPT>

          4

          html代碼大全:你不一定知道的技巧

          16. ncontextmenu="window.event.returnValue=false" 將徹底屏蔽鼠標(biāo)右鍵

            <table borderncontextmenu=return(false)><td>no</table> 可用于Table

          17. <body nselectstart="return false"> 取消選取、防止復(fù)制

          18.onpaste="return false" 不準(zhǔn)粘貼

          19.oncopy="return false;" ncut="return false;" 防止復(fù)制

          20. <link rel="Shortcut Icon"href="favicon.ico"> IE地址欄前換成自己的圖標(biāo)

          21. <link rel="Bookmark"href="favicon.ico"> 可以在收藏夾中顯示出你的圖標(biāo)

          22. <inputstyle="ime-mode:disabled"> 關(guān)閉輸入法

          23. 永遠(yuǎn)都會(huì)帶著框架

          <script. language="JavaScript"><!--

          if (window == top)top.location.href = "frames.htm"; //frames.htm為框架網(wǎng)頁(yè)

          // --></script>

          24. 防止被人frame.

          <SCRIPT. LANGUAGE=JAVASCRIPT><!--

          if (top.location != self.location)top.location=self.location;

          // --></SCRIPT>

          25. 網(wǎng)頁(yè)將不能被另存為

          <noscript><iframe.src=*.html></iframe></noscript>

          26. 查看網(wǎng)頁(yè)源代碼

          <input type=button value=查看網(wǎng)頁(yè)源代碼

          onclick="window.location = "view-source:"+"http://www.pconline.com.cn"">

          27.刪除時(shí)確認(rèn)

          <a href="javascript:if(confirm("確實(shí)要?jiǎng)h除嗎?"))location="boos.asp? &areyou=刪除&page=1"">刪除</a>

          28.屏蔽功能鍵Shift,Alt,Ctrl

          <script>

          function look(){

          if(event.shiftKey)

          alert("禁止按Shift鍵!");//可以換成ALT CTRL

          }

          document.onkeydown=look;

          </script>

          29. 網(wǎng)頁(yè)不會(huì)被緩存

          <META. HTTP-EQUIV="pragma" CONTENT="no-cache">

          <META. HTTP-EQUIV="Cache-Control"CONTENT="no-cache, must-revalidate">

          <META. HTTP-EQUIV="expires"CONTENT="Wed, 26 Feb 1997 08:21:57 GMT">

          或者<META. HTTP-EQUIV="expires"CONTENT="0">

          30.怎樣讓表單沒(méi)有凹凸感?

          <input type=text style="border:1 solid #000000">

          或 <input type=text style="border-left:none;border-right:none; border -top:none; border-bottom: 1 solid#000000"></textarea>

          31.不要滾動(dòng)條?

          讓豎條沒(méi)有:

          <body style="overflow:scroll;overflow-y:hidden">

          </body>

          讓橫條沒(méi)有:

          <body style="overflow:scroll;overflow-x:hidden">

          </body>

          兩個(gè)都去掉?更簡(jiǎn)單了

          <body scroll="no">

          </body>

          32.怎樣去掉圖片鏈接點(diǎn)擊后,圖片周?chē)奶摼€?

          <a href="#"nFocus="this.blur()"><img src="logo.jpg"border=0></a>

          33.電子郵件處理提交表單

          <form. name="form1"method="post" action="mailt****@***.com"enctype="text/plain">

          <input type=submit>

          </form>

          34.在打開(kāi)的子窗口刷新父窗口的代碼里如何寫(xiě)?

          window.opener.location.reload()

          35.如何設(shè)定打開(kāi)頁(yè)面的大小

          <body nload="top.resizeTo(300,200);">

          打開(kāi)頁(yè)面的位置<bodynload="top.moveBy(300,200);">

          36.在頁(yè)面中如何加入不是滿鋪的背景圖片,拉動(dòng)頁(yè)面時(shí)背景圖不動(dòng)

          <STYLE>

          body

          {background-image:url(logo.gif); background-repeat:no-repeat;

          background-position:center;background-attachment: fixed}

          </STYLE>

          37. 檢查一段字符串是否全由數(shù)字組成

          <script. language="Javascript"><!--

          function checkNum(str){return str.match(//D/)==null}

          alert(checkNum("1232142141"))

          alert(checkNum("123214214a1"))

          // --></script>

          38. 獲得一個(gè)窗口的大小

          document.body.clientWidth; document.body.clientHeight

          39. 怎么判斷是否是字符

          if (/[^/x00-/xff]/g.test(s)) alert("含有漢字");

          else alert("全是字符");

          40.TEXTAREA自適應(yīng)文字行數(shù)的多少

          <textarea rows=1 name=s1 cols=27npropertychange="this.style.posHeight=this.scrollHeight">

          </textarea>

          41. 日期減去天數(shù)等于第二個(gè)日期

          <script. language=Javascript>

          function cc(dd,dadd)

          {

          //可以加上錯(cuò)誤處理

          var a = new Date(dd)

          a = a.valueOf()

          a = a - dadd * 24 * 60 * 60 * 1000

          a = new Date(a)

          alert(a.getFullYear() + "年" + (a.getMonth() +1) + "月" + a.getDate() + "日")

          } cc("12/23/2002",2)

          </script>

          42. 選擇了哪一個(gè)Radio

          <HTML><script. language="vbscript">

          function checkme()

          for each ob in radio1

          if ob.checked then window.alert ob.value

          next

          end function

          </script><BODY>

          <INPUT name="radio1" type="radio"value="style" checked>Style.

          <INPUT name="radio1" type="radio"value="barcode">Barcode

          <INPUT type="button" value="check"nclick="checkme()">

          </BODY></HTML>

          43.腳本永不出錯(cuò)

          <SCRIPT. LANGUAGE="JavaScript">

          <!-- Hide function killErrors(){return true;} window.onerror = killErrors;// -->

          </SCRIPT>

          44.ENTER鍵可以讓光標(biāo)移到下一個(gè)輸入框

          <input nkeydown="if(event.keyCode==13)event.keyCode=9">

          文末再提兩點(diǎn)建議吧:

          1. 剛學(xué)前端JavaScript的時(shí)候,一定不要追求速成,編程不比其他傳統(tǒng)行業(yè),可以快速的上手,他需要一定的代碼量積累起來(lái),不然你追求速成很可能會(huì)車(chē)毀人亡。

          2. 這個(gè)文章到這里就說(shuō)完了,想要前端學(xué)習(xí)資料的進(jìn)我的群自助領(lǐng)取,已經(jīng)上傳到群文件里了:574462090,歡迎初學(xué)和進(jìn)階中的小伙伴。

          如果想看到更加系統(tǒng)的文章和學(xué)習(xí)方法經(jīng)驗(yàn)可以關(guān)注我的微信公眾號(hào):‘前端根據(jù)地’關(guān)注后回復(fù)‘給我資料’可以領(lǐng)取一套完整的學(xué)習(xí)視頻

          ype關(guān)鍵字使用

          type是go語(yǔ)法里的重要而且常用的關(guān)鍵字,type絕不只是對(duì)應(yīng)于C/C++中的typedef。搞清楚type的使用,就容易理解go語(yǔ)言中的核心概念struct、interface、函數(shù)等的使用。以下我用例子代碼總結(jié)描述,請(qǐng)?zhí)貏e留意代碼中的注釋。

          1、定義結(jié)構(gòu)體

          //結(jié)構(gòu)體定義
          type person struct {
             name string //注意后面不能有逗號(hào)
             age  int
          }
          
          func main() {
             //結(jié)構(gòu)體初始化
             p := person{
                name: "taozs", //注意后面要加逗號(hào)
                age:  18, //或者下面的}提到這兒來(lái)可以省略逗號(hào)
             }
          
             fmt.Println(p.name)
          }
          
          //初始化字段不一定要全部指定,比如下面也是可以的,name默認(rèn)取長(zhǎng)度為0的空字符串
          p := person{
             age: 18,
          }

          2、類型等價(jià)定義,相當(dāng)于類型重命名
          
          

          type name string
          name類型與string等價(jià)
          
          例子:
          type name string
          
          func main() {
             var myname name = "taozs" //其實(shí)就是字符串類型
             l := []byte(myname) //字符串轉(zhuǎn)字節(jié)數(shù)組
             fmt.Println(len(l)) //字節(jié)長(zhǎng)度
          }

          不過(guò),要注意的是,type絕不只是用于定義一系列的別名。還可以針對(duì)新類型定義方法。
          上面的name類型可以像下面這樣定義方法:
          

          type name string
          
          func (n name) len() int {
             return len(n)
          }
          
          func main() {
             var myname name = "taozs" //其實(shí)就是字符串類型
             l := []byte(myname) //字符串轉(zhuǎn)字節(jié)數(shù)組
             fmt.Println(len(l)) //字節(jié)長(zhǎng)度
             fmt.Println(myname.len()) //調(diào)用對(duì)象的方法
          }

          3、結(jié)構(gòu)體內(nèi)嵌匿名成員

          //結(jié)構(gòu)體內(nèi)嵌匿名成員定義
          type person struct {
             string //直接寫(xiě)類型,匿名
             age int
          }
          
          func main() {
             //結(jié)構(gòu)體匿名成員初始化
             p := person{string: "taozs", age: 18}//可以省略部分字段,如:person{string: "taozs"}。也可以這樣省略字段名:person{“taozs”, 18},但必須寫(xiě)全了,不可以省略部分字段
             //結(jié)構(gòu)體匿名成員訪問(wèn)
             fmt.Println(p.string) //注意不能用強(qiáng)制類型轉(zhuǎn)換(類型斷言):p.(string)
          }
          
          以下是只有單個(gè)匿名成員的例子。
          //結(jié)構(gòu)體內(nèi)嵌匿名成員定義
          type person struct {
             string
          }
          
          func main() {
             //結(jié)構(gòu)體匿名成員初始化
             p := person{string: "taozs"} //也可這樣:person{"taozs"}
             //結(jié)構(gòu)體匿名成員訪問(wèn)
             fmt.Println(p.string) //注意不能用強(qiáng)制類型轉(zhuǎn)換(類型斷言):p.(string)
          }

          4、定義接口類型
          

          package main
          
          import (
             "fmt"
          )
          
          //接口定義
          type Personer interface {
             Run()
             Name() string
          }
          
          //實(shí)現(xiàn)接口,注意實(shí)現(xiàn)接口的不一定只是結(jié)構(gòu)體,也可以是函數(shù)對(duì)象,參見(jiàn)下面第5條
          type person struct {
             name string
             age  int
          }
          
          func (person) Run() {
             fmt.Println("running...")
          }
          
          //接收參數(shù)person不可以是指針類型,否則不認(rèn)為是實(shí)現(xiàn)了接口
          func (p person) Name() string {
             return p.name
          }
          
          func main() {
          //接口類型的變量定義
          var p Personer
             fmt.Println(p) //值<nil>
             
             //實(shí)例化結(jié)構(gòu)體,并賦值給interface
             p = person{"taozs", 18} //或者:&person{"taozs", 18}
             p.Run()
             fmt.Println(p.Name())
             
             var p2 person = p.(person) //類型斷言,接口類型斷言到具體類型
             fmt.Println(p2.age)
          }
          
          //另外,類型斷言返回值也可以有第二個(gè)bool值,表示斷言是否成功,如下:
          if p2, ok := p.(person); ok {//斷言成功ok值為true
             fmt.Println(ok)
             fmt.Println(p2.age)
          }

          5、定義函數(shù)類型

          //以下是定義一個(gè)函數(shù)類型handler
          type handler func (name string) int
          
          //針對(duì)這個(gè)函數(shù)類型可以再定義方法,如:
          func (h handler) add(name string) int {
             return h(name) + 10
          }

          //下面讓我們?cè)敿?xì)看一下例子,其中涉及了函數(shù)、函數(shù)的方法、結(jié)構(gòu)體方法、接口的使用。
          

          package main
          
          import (
              "fmt"
          )
          
          //定義接口
          type adder interface {
              add(string) int
          }
          
          //定義函數(shù)類型
          type handler func (name string) int
          
          //實(shí)現(xiàn)函數(shù)類型方法
          func (h handler) add(name string) int {
              return h(name) + 10
          }
          
          //函數(shù)參數(shù)類型接受實(shí)現(xiàn)了adder接口的對(duì)象(函數(shù)或結(jié)構(gòu)體)
          func process(a adder) {
              fmt.Println("process:", a.add("taozs"))
          }
          
          //另一個(gè)函數(shù)定義
          func doubler(name string) int {
              return len(name) * 2
          }
          
          //非函數(shù)類型
          type myint int
          
          //實(shí)現(xiàn)了adder接口
          func (i myint) add(name string) int {
              return len(name) + int(i)
          }
          
          func main() {
              //注意要成為函數(shù)對(duì)象必須顯式定義handler類型
              var my handler = func (name string) int {
                  return len(name)
              }
          
              //以下是函數(shù)或函數(shù)方法的調(diào)用
              fmt.Println(my("taozs"))                   //調(diào)用函數(shù)
          
              fmt.Println(my.add("taozs")) //調(diào)用函數(shù)對(duì)象的方法
          
              fmt.Println(handler(doubler).add("taozs")) //doubler函數(shù)顯式轉(zhuǎn)換成handler函數(shù)對(duì)象然后調(diào)用對(duì)象的add方法
              //
              ////以下是針對(duì)接口adder的調(diào)用
              process(my) //process函數(shù)需要adder接口類型參數(shù)
              //
              process(handler(doubler)) //因?yàn)閜rocess接受的參數(shù)類型是handler,所以這兒要強(qiáng)制轉(zhuǎn)換
              //
              process(myint(8)) //實(shí)現(xiàn)adder接口不僅可以是函數(shù)也可以是結(jié)構(gòu)體
          }

          熟悉了上面type的各種用法,現(xiàn)在來(lái)一起分析下http包里面的HandleFunc type func() 用法分析

          在看golang 的http服務(wù)部分代碼時(shí),被golang 中的 type func()寫(xiě)法難住了,一時(shí)沒(méi)看懂代碼。后來(lái)查資料后,有了一點(diǎn)理解。
          在golang中可以通過(guò)這樣簡(jiǎn)單實(shí)現(xiàn)一個(gè)http服務(wù)

          package main
          
          import "net/http"
          
          func mHttp() {
              http.HandleFunc("/", h)
              http.ListenAndServe("0.0.0.0:8888",nil)
          }
          func h(w http.ResponseWriter, r *http.Request) {
          
          }

          http.HandleFunc()是一個(gè)注冊(cè)函數(shù),傳一個(gè)string類型的路由,和一個(gè)函數(shù),函數(shù)的參數(shù)為(http.ResponseWriter, *http.Request)。跟蹤進(jìn)入函數(shù),在golang 源碼net/http/server.go文件中

          func HandleFunc(pattern string, handler func(ResponseWriter, *Request)) {
              DefaultServeMux.HandleFunc(pattern, handler)
          }

          HandleFunc調(diào)用了DefaultServeMux.HandleFunc(pattern, handler)
          至于這些函數(shù)是干啥的先不做探討,這不是本文的重點(diǎn)。
          再次跟進(jìn)函數(shù)

          func (mux *ServeMux) HandleFunc(pattern string, handler func(ResponseWriter, *Request)) {
              if handler == nil {
                  panic("http: nil handler")
              }
              mux.Handle(pattern, HandlerFunc(handler))
          }

          mux.Handle(pattern, HandlerFunc(handler)) 的第二個(gè)參數(shù)HandlerFunc(handler)是什么鬼。
          跟進(jìn)看一下

          type HandlerFunc func(ResponseWriter, *Request)
          
          func (f HandlerFunc) ServeHTTP(w ResponseWriter, r *Request) {
              f(w, r)
          }

          原來(lái)HandlerFunc 是用 type 定義的函數(shù),而函數(shù)的類型就是最開(kāi)始傳入的類型func(ResponseWriter, *Request)
          ServeHTTPHandlerFunc的一個(gè)方法(注意一下,golang中方法和函數(shù)不是一回事)。并且HandlerFunc實(shí)現(xiàn)了 Handler接口
          Handler接口定義:

          type Handler interface {
              ServeHTTP(ResponseWriter, *Request)
          }

          回到HandleFunc方法中,mux.Handle(pattern, HandlerFunc(handler))的第二個(gè)參數(shù)是把傳入的函數(shù) handler 強(qiáng)轉(zhuǎn)成 HandlerFunc類型,這樣handler就實(shí)現(xiàn)了Handler接口。
          到這我們明白HandlerFunc(handler) 是把普通函數(shù)強(qiáng)轉(zhuǎn)成type定義的函數(shù)。
          現(xiàn)在寫(xiě)一個(gè)簡(jiǎn)單的demo驗(yàn)證一下:

          package main
          
          import "fmt"
          
          func main() {
             one(2, callback)
          }
          
          //需要傳遞函數(shù)
          func callback(i int) {
             fmt.Println("i am callBack")
             fmt.Println(i)
          }
          
          //main中調(diào)用的函數(shù)
          func one(i int, f func(int)) {
             two(i, fun(f))
          }
          
          //one()中調(diào)用的函數(shù)
          func two(i int, c Call) {
             c.call(i)
          }
          
          //定義的type函數(shù)
          type fun func(int)
          
          //fun實(shí)現(xiàn)的Call接口的call()函數(shù)
          func (f fun) call(i int) {
             f(i)
          }
          
          //接口
          type Call interface {
             call(int)
          }

          先看一下程序的運(yùn)行結(jié)果:


          我們?cè)?/span>main()函數(shù)中調(diào)用了one()函數(shù),并傳入了callback()函數(shù),最終調(diào)用了我們傳入的callback()函數(shù)。

          理一下思路:

          使用type定義函數(shù) func(int)
          定義
          Call 接口,Call中有一個(gè)函數(shù) call(int)
          main()中調(diào)用one(2, callback),在one()中調(diào)用two(),傳入two()函數(shù)前,對(duì)callback函數(shù)實(shí)現(xiàn)了類型轉(zhuǎn)換,從普通函數(shù)轉(zhuǎn)換成type定義的函數(shù)。
          two() 中調(diào)用傳入的 c 因?yàn)?c 實(shí)現(xiàn)了 Call 接口,所以可以調(diào)用 call() 函數(shù),最終調(diào)用了我們傳入的 callback() 函數(shù)。

          本文來(lái)自博客園,作者:孫龍-程序員,轉(zhuǎn)載請(qǐng)注明原文鏈接:https://www.cnblogs.com/sunlong88/p/13482960.html

          HTML4到XHTML再到html5,網(wǎng)頁(yè)編輯從簡(jiǎn)單到復(fù)雜,從不規(guī)范到規(guī)范代碼。從沒(méi)有特效到復(fù)雜的特效,經(jīng)歷了幾十年的時(shí)間,現(xiàn)在HTML6即將推出,而HTML也徹底轉(zhuǎn)變?yōu)閤ml了。并且更加規(guī)范了。

          HTML6示例代碼:

          <!DOCTYPE html>

          <html:title>負(fù)責(zé)網(wǎng)頁(yè)標(biāo)題

          <html:media>負(fù)責(zé)媒體等。<html:media> 涵蓋 <img>, <video>, <embed> 等標(biāo)簽的所有功能

          html6還可以自定義標(biāo)簽,然后使用js和css處理標(biāo)簽。例如上面代碼中 的logo標(biāo)簽。

          <logo><html:media type="image" src="images/xyz.png"></logo>

          HTML6 規(guī)范還未發(fā)布,本文原作者 Oscar Godson 只是為我們提供了一個(gè)對(duì) HTML6 規(guī)范的展望,或者說(shuō)他希望 HTML6 能夠支持的一些新特性。

          HTML5

          有興趣的網(wǎng)友可以關(guān)注Java學(xué)習(xí)論壇www.91yaoge.top


          主站蜘蛛池模板: 亚洲性日韩精品国产一区二区| 蜜桃传媒视频麻豆第一区| 精品三级AV无码一区| 国产伦精品一区二区三区精品 | 亚拍精品一区二区三区| 中文字幕一区视频| 日产一区日产2区| 无码精品久久一区二区三区 | 人成精品视频三区二区一区| 国内精品一区二区三区最新| 精品国产AⅤ一区二区三区4区| av无码免费一区二区三区| 国产女人乱人伦精品一区二区| 亚洲一区中文字幕在线电影网| 手机看片一区二区| 久久久久人妻精品一区三寸蜜桃| 日韩成人一区ftp在线播放| 亚洲综合一区二区| 日本一区二区三区在线观看| 色视频综合无码一区二区三区 | 精品无码一区二区三区亚洲桃色| 国产一区二区三区在线电影| 精品一区二区三区在线观看l| 任你躁国产自任一区二区三区| 中文字幕日韩一区| 日本中文字幕在线视频一区| 久久se精品一区二区国产| 精品免费AV一区二区三区| 3D动漫精品啪啪一区二区下载 | 无码人妻一区二区三区在线水卜樱| 国产裸体舞一区二区三区| 精品国产一区二区22| 狠狠综合久久AV一区二区三区| 精品不卡一区二区| 大伊香蕉精品一区视频在线 | 国产精品熟女一区二区| 狠狠做深爱婷婷久久综合一区| 亚洲一区动漫卡通在线播放| 日韩人妻无码一区二区三区久久99 | 国产主播一区二区三区在线观看| 人妻激情偷乱视频一区二区三区 |