mirror of
https://github.com/golang/go
synced 2024-11-21 22:54:40 -07:00
doc/go1: more package updates
Everything there (as first draft) except the time package. R=golang-dev, adg, bradfitz CC=golang-dev https://golang.org/cl/5487052
This commit is contained in:
parent
196b663075
commit
f76bd4fe0f
119
doc/go1.html
119
doc/go1.html
@ -626,8 +626,55 @@ rather than <code>syscall</code> and so will be unaffected.
|
|||||||
|
|
||||||
<h3 id="time">Time</h3>
|
<h3 id="time">Time</h3>
|
||||||
|
|
||||||
|
<h3 id="html">The html package</h3>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
The <a href="/pkg/html/"><code>html</code></a> package in Go 1 provides
|
||||||
|
a full parser for HTML5.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
<em>Updating</em>:
|
||||||
|
Since the package's functionality is new, no updating is necessary.
|
||||||
|
</p>
|
||||||
|
|
||||||
<h3 id="http">The http package</h3>
|
<h3 id="http">The http package</h3>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
In Go 1 the <a href="/pkg/http/"><code>http</code></a> package is refactored,
|
||||||
|
putting some of the utilities into a
|
||||||
|
<a href="/pkg/httputil/"><code>httputil</code></a> subdirectory.
|
||||||
|
These pieces are only rarely needed by HTTP clients.
|
||||||
|
The affected items are:
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li>ClientConn</li>
|
||||||
|
<li>DumpRequest</li>
|
||||||
|
<li>DumpRequest</li>
|
||||||
|
<li>DumpRequestOut</li>
|
||||||
|
<li>DumpResponse</li>
|
||||||
|
<li>NewChunkedReader</li>
|
||||||
|
<li>NewChunkedWriter</li>
|
||||||
|
<li>NewClientConn</li>
|
||||||
|
<li>NewProxyClientConn</li>
|
||||||
|
<li>NewServerConn</li>
|
||||||
|
<li>NewSingleHostReverseProxy</li>
|
||||||
|
<li>ReverseProxy</li>
|
||||||
|
<li>ServerConn</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Also, the <code>Request.RawURL</code> field has been removed; it was a
|
||||||
|
historical artifact.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
<em>Updating</em>:
|
||||||
|
Gofix will update the few programs that are affected except for
|
||||||
|
uses of <code>RawURL</code>, which must be fixed by hand.
|
||||||
|
</p>
|
||||||
|
|
||||||
<h3 id="strconv">The strconv package</h3>
|
<h3 id="strconv">The strconv package</h3>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
@ -724,6 +771,78 @@ a cast that must be added by hand; gofix will warn about it.
|
|||||||
|
|
||||||
<h3 id="os_fileinfo">The os.FileInfo type</h3>
|
<h3 id="os_fileinfo">The os.FileInfo type</h3>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Go 1 redefines the <a href="/pkg/os/#FileInfo"><code>os.FileInfo</code></a> type,
|
||||||
|
changing it from a struct to an interface:
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<pre>
|
||||||
|
type FileInfo interface {
|
||||||
|
Name() string // base name of the file
|
||||||
|
Size() int64 // length in bytes
|
||||||
|
Mode() FileMode // file mode bits
|
||||||
|
ModTime() time.Time // modification time
|
||||||
|
IsDir() bool // abbreviation for Mode().IsDir()
|
||||||
|
}
|
||||||
|
</pre>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
The file mode information has been moved into a subtype called
|
||||||
|
<a href="/pkg/os/#FileMode"><code>os.FileMode</code></a>,
|
||||||
|
a simple integer type with <code>IsDir</code>, <code>Perm</code>, and <code>String</code>
|
||||||
|
methods.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
The system-specific details of file modes and properties such as (on Unix)
|
||||||
|
i-number have been removed from <code>FileInfo</code> altogether.
|
||||||
|
Instead, each operating system's <code>os</code> package provides an
|
||||||
|
implementation of the <code>FileInfo</code> interface, <code>*os.FileStat</code>,
|
||||||
|
which in turn contains a <code>Sys</code> field that stores the
|
||||||
|
system-specific representation of file metadata.
|
||||||
|
For instance, to discover the i-number of a file on a Unix system, unpack
|
||||||
|
the <code>FileInfo</code> like this:
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<pre>
|
||||||
|
fi, err := os.Stat("hello.go")
|
||||||
|
if err != nil {
|
||||||
|
log.Fatal(err)
|
||||||
|
}
|
||||||
|
// Make sure it's an implementation known to package os.
|
||||||
|
fileStat, ok := fi.(*os.FileStat)
|
||||||
|
if !ok {
|
||||||
|
log.Fatal("hello.go: not an os File")
|
||||||
|
}
|
||||||
|
// Now check that it's a Unix file.
|
||||||
|
unixStat, ok := fileStat.Sys.(*syscall.Stat_t)
|
||||||
|
if !ok {
|
||||||
|
log.Fatal("hello.go: not a Unix file")
|
||||||
|
}
|
||||||
|
fmt.Printf("file i-number: %d\n", unixStat.Ino)
|
||||||
|
</pre>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Assuming (which is unwise) that <code>"hello.go"</code> is a Unix file,
|
||||||
|
the i-number expression could be contracted to
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<pre>
|
||||||
|
fi.(*os.FileStat).Sys.(*syscall.Stat_t).Ino
|
||||||
|
</pre>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
The vast majority of uses of <code>FileInfo</code> need only the methods
|
||||||
|
of the standard interface.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
<em>Updating</em>:
|
||||||
|
Gofix will update code that uses the old equivalent of the current <code>os.FileInfo</code>
|
||||||
|
and <code>os.FileMode</code> API.
|
||||||
|
Code that needs system-specific file details will need to be updated by hand.
|
||||||
|
</p>
|
||||||
|
|
||||||
<h3 id="exp">The package tree exp</h3>
|
<h3 id="exp">The package tree exp</h3>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
|
119
doc/go1.tmpl
119
doc/go1.tmpl
@ -529,8 +529,55 @@ rather than <code>syscall</code> and so will be unaffected.
|
|||||||
|
|
||||||
<h3 id="time">Time</h3>
|
<h3 id="time">Time</h3>
|
||||||
|
|
||||||
|
<h3 id="html">The html package</h3>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
The <a href="/pkg/html/"><code>html</code></a> package in Go 1 provides
|
||||||
|
a full parser for HTML5.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
<em>Updating</em>:
|
||||||
|
Since the package's functionality is new, no updating is necessary.
|
||||||
|
</p>
|
||||||
|
|
||||||
<h3 id="http">The http package</h3>
|
<h3 id="http">The http package</h3>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
In Go 1 the <a href="/pkg/http/"><code>http</code></a> package is refactored,
|
||||||
|
putting some of the utilities into a
|
||||||
|
<a href="/pkg/httputil/"><code>httputil</code></a> subdirectory.
|
||||||
|
These pieces are only rarely needed by HTTP clients.
|
||||||
|
The affected items are:
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li>ClientConn</li>
|
||||||
|
<li>DumpRequest</li>
|
||||||
|
<li>DumpRequest</li>
|
||||||
|
<li>DumpRequestOut</li>
|
||||||
|
<li>DumpResponse</li>
|
||||||
|
<li>NewChunkedReader</li>
|
||||||
|
<li>NewChunkedWriter</li>
|
||||||
|
<li>NewClientConn</li>
|
||||||
|
<li>NewProxyClientConn</li>
|
||||||
|
<li>NewServerConn</li>
|
||||||
|
<li>NewSingleHostReverseProxy</li>
|
||||||
|
<li>ReverseProxy</li>
|
||||||
|
<li>ServerConn</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Also, the <code>Request.RawURL</code> field has been removed; it was a
|
||||||
|
historical artifact.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
<em>Updating</em>:
|
||||||
|
Gofix will update the few programs that are affected except for
|
||||||
|
uses of <code>RawURL</code>, which must be fixed by hand.
|
||||||
|
</p>
|
||||||
|
|
||||||
<h3 id="strconv">The strconv package</h3>
|
<h3 id="strconv">The strconv package</h3>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
@ -627,6 +674,78 @@ a cast that must be added by hand; gofix will warn about it.
|
|||||||
|
|
||||||
<h3 id="os_fileinfo">The os.FileInfo type</h3>
|
<h3 id="os_fileinfo">The os.FileInfo type</h3>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Go 1 redefines the <a href="/pkg/os/#FileInfo"><code>os.FileInfo</code></a> type,
|
||||||
|
changing it from a struct to an interface:
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<pre>
|
||||||
|
type FileInfo interface {
|
||||||
|
Name() string // base name of the file
|
||||||
|
Size() int64 // length in bytes
|
||||||
|
Mode() FileMode // file mode bits
|
||||||
|
ModTime() time.Time // modification time
|
||||||
|
IsDir() bool // abbreviation for Mode().IsDir()
|
||||||
|
}
|
||||||
|
</pre>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
The file mode information has been moved into a subtype called
|
||||||
|
<a href="/pkg/os/#FileMode"><code>os.FileMode</code></a>,
|
||||||
|
a simple integer type with <code>IsDir</code>, <code>Perm</code>, and <code>String</code>
|
||||||
|
methods.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
The system-specific details of file modes and properties such as (on Unix)
|
||||||
|
i-number have been removed from <code>FileInfo</code> altogether.
|
||||||
|
Instead, each operating system's <code>os</code> package provides an
|
||||||
|
implementation of the <code>FileInfo</code> interface, <code>*os.FileStat</code>,
|
||||||
|
which in turn contains a <code>Sys</code> field that stores the
|
||||||
|
system-specific representation of file metadata.
|
||||||
|
For instance, to discover the i-number of a file on a Unix system, unpack
|
||||||
|
the <code>FileInfo</code> like this:
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<pre>
|
||||||
|
fi, err := os.Stat("hello.go")
|
||||||
|
if err != nil {
|
||||||
|
log.Fatal(err)
|
||||||
|
}
|
||||||
|
// Make sure it's an implementation known to package os.
|
||||||
|
fileStat, ok := fi.(*os.FileStat)
|
||||||
|
if !ok {
|
||||||
|
log.Fatal("hello.go: not an os File")
|
||||||
|
}
|
||||||
|
// Now check that it's a Unix file.
|
||||||
|
unixStat, ok := fileStat.Sys.(*syscall.Stat_t)
|
||||||
|
if !ok {
|
||||||
|
log.Fatal("hello.go: not a Unix file")
|
||||||
|
}
|
||||||
|
fmt.Printf("file i-number: %d\n", unixStat.Ino)
|
||||||
|
</pre>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Assuming (which is unwise) that <code>"hello.go"</code> is a Unix file,
|
||||||
|
the i-number expression could be contracted to
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<pre>
|
||||||
|
fi.(*os.FileStat).Sys.(*syscall.Stat_t).Ino
|
||||||
|
</pre>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
The vast majority of uses of <code>FileInfo</code> need only the methods
|
||||||
|
of the standard interface.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
<em>Updating</em>:
|
||||||
|
Gofix will update code that uses the old equivalent of the current <code>os.FileInfo</code>
|
||||||
|
and <code>os.FileMode</code> API.
|
||||||
|
Code that needs system-specific file details will need to be updated by hand.
|
||||||
|
</p>
|
||||||
|
|
||||||
<h3 id="exp">The package tree exp</h3>
|
<h3 id="exp">The package tree exp</h3>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
|
Loading…
Reference in New Issue
Block a user